HDU 1022 火车进站【栈】

 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022

题目大意:

题目大概意思:有N辆火车,以序列1方式进站,判断是否能以序列2方式出栈。进站不一定是一次性进入,也就是说中途可以出站。

#include <cstdio>
#include <stack>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int i, j, n;char a[], b[], c[];
while (scanf("%d", &n) != EOF)
{
getchar();
stack<char>q;
scanf("%s", a);
scanf("%s", b);
int k = ,m=;
for (i = ; i < n; i++)
{
q.push(a[i]);
c[m++] = ;
while (q.top() == b[k])
{
k++;
q.pop();
c[m++] = ;
if (!q.size())break; //也一定要加上这句,不然如果栈中无元素的话,q.top()的时候就会出错 ******
/*if (k >= n)break; */ //不一定要加上这一句,因为栈空的时候,b[]数组一定没有越界,两种情况都符合
}
}
if (!q.size())
{
printf("Yes.\n");
for (i = ; i < m; i++)
{
if (c[i] == )printf("in\n");
else
printf("out\n");
}
}
else printf("No.\n");
printf("FINISH\n");
}
return ;
}

2018-04-04

上一篇:练手项目:利用pygame库编写射击游戏


下一篇:使用ImageCreate()创建一个代表空白图像的变量