您的位置:首页 > 其它

hdu 1022 AND toj 1036 栈的运用

2015-04-12 22:10 309 查看
其实就是模拟一下栈啦。

hdu 1022:

#include <iostream>
using namespace std;

const int N = 10;
char o1
;
char o2
;
char s
;
int ans[N * 2];

int main ()
{
int n;
while ( cin >> n )
{
cin >> o1 >> o2;
int top = 0, p = 0, cnt = 0;
for ( int i = 0; i < n; i++ )
{
if ( top == 0 )
{
s[top++] = o1[p++];
ans[cnt++] = 1;
}
while ( s[top - 1] != o2[i] )
{
if ( p == n ) break;
s[top++] = o1[p++];
ans[cnt++] = 1;
}
if ( s[top - 1] != o2[i] )
{
break;
}
else
{
top--;
ans[cnt++] = 0;
}
}
if ( cnt == 2 * n )
{
cout << "Yes." << endl;
for ( int i = 0; i < cnt; i++ )
{
cout << ( ans[i] ? "in" : "out" ) << endl;
}
}
else
{
cout << "No." << endl;
}
cout << "FINISH" << endl;
}
return 0;
}


toj 1036(和上一个题基本一样,输入输出麻烦点):

#include <cstdio>

const int N = 1000;
int s
;

int main ()
{
int n;
while ( scanf("%d", &n), n )
{
int tmp;
while ( scanf("%d", &tmp), tmp )
{
int top = 0, p = 1;
bool flag = true;
for ( int i = 0; i < n; i++ )
{
if ( top == 0 )
{
s[top++] = p++;
}
while ( s[top - 1] != tmp )
{
if ( p == n + 1 ) break;
s[top++] = p++;
}
if ( s[top - 1] != tmp )
{
flag = false;
}
else
{
top--;
}
if ( i != n - 1 )
{
scanf("%d", &tmp);
}
}
printf("%s\n", flag ? "Yes" : "No");
}
putchar('\n');
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: