您的位置:首页 > 大数据 > 人工智能

【HDOJ】1022 Train Problem I

2014-04-02 17:06 302 查看
栈和队列训练题目。

#include <stdio.h>
#include <string.h>

#define MAXNUM 1005

char in[MAXNUM];
char out[MAXNUM];
char stack[MAXNUM];
char order[MAXNUM]; // 1:in, 0:out

int main() {
int n;
int i, j, k, tmp, flg;
int top;

while (scanf("%d %s %s", &n, in, out) != EOF) {
top = k = 0;
for (i=0; in[i]!=out[0]&&i<n; ++i) {
stack[top++] = in[i];
order[k++] = 1;
}
tmp = i+1;
order[k++]=1; order[k++]=0;
flg = 0;
for (i=1; i<n; ++i) {
if (top) {
if (stack[top-1] == out[i]) {
--top;
order[k++] = 0;
continue;
}
for (j=0; j<top-1; ++j) {
if (stack[j] == out[i]) {
printf("No.\nFINISH\n");
flg = 1;
break;
}
}
}
if (flg)
break;
for (j=tmp; in[j]!=out[i]&&j<n; ++j) {
stack[top++] = in[j];
order[k++] = 1;
}
tmp = j+1;
order[k++]=1; order[k++]=0;
}
if (flg)
continue;
printf("Yes.\n");
for (i=0; i<k; ++i)
if (order[i])
printf("in\n");
else
printf("out\n");
printf("FINISH\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: