您的位置:首页 > 其它

ACM题解报告——HD1022

2013-05-16 22:43 351 查看
比较简单的一道进栈和出栈的题目:http://acm.hdu.edu.cn/showproblem.php?pid=1022

题目的大体意思就是一个火车站某一时刻只能停9辆火车,分别输入进栈火车的数量、序列和火车出栈的序列,判断该出栈序列能否满足要求,如果可以满足要求,则进栈时输出in、出栈时输出out.

代码如下:

#include<stdio.h>
#include<iostream>
using namespace std;
int main( )
{
int n,i,j;
char a[10],b[10],stack[10];//a,b是两个串
int top;
while( scanf("%d",&n)!=EOF)
{
top=-1;//栈为空
cin>>a>>b;

for(i=0,j=0;i<n;i++)
{
top++;
stack[top]=a[i];//a[i]进栈

while( 1)
{
if( top==-1||stack[top]!=b[j]) break;//栈为空或者不符合出栈的条件,跳出while循环
else
{//出栈
top--;
j++;
}
}
}
if( top!=-1)//若最后栈不为空,则该出栈顺序无法满足
printf("No.\n");
else
{
printf("Yes.\n");

for(i=0,j=0;i<n;i++)
{//进栈输出in,出栈输出out
top++;
stack[top]=a[ i];
printf("in\n");
while( 1)
{
if( top==-1||stack[top]!=b[j]) break;
else
{
top--;
j++;
printf("out\n");
}
}
}
}
printf("FINISH\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: