hdu 1022 Train Problem I(棧的應用)

題目鏈接:

題目大意:給定兩個字符串,判斷是否滿足後進先出的規則.

代碼如下:

#include<iostream>
#include<stdlib.h>
#include<cstring>
using namespace std;
int a[10000],b[10000],c[10000],d[10000],m;
int main(void)
{
	char s1[10000],s2[10000];
	int i,j,k,p;
	while(scanf("%d",&m)!=EOF)
	{
		scanf("%s%s",s1,s2);
		for(i=0;i<m;i++)
			a[i+1]=s1[i]-'0';
		for(i=0;i<m;i++)
			b[i+1]=s2[i]-'0';
		i=1;k=1;j=1;p=0;
		while(j<=m)
		{
			if(i<=m)
			{
				p++;
				d[p]=a[i];
				i++;
				c[k++]=1;
			}
			if(i>m&&d[p]!=b[j])
				break;
			while(d[p]==b[j]&&j<=m)
			{
				p--;
				c[k++]=2;
				j++;
			}
		}
		if(j==m+1)
		{
			printf("Yes.\n");
			for(i=1;i<=2*m;i++)
			{
				if(c[i]==2)
					printf("out\n");
				else
					printf("in\n");
			}
			printf("FINISH\n");
		}
		else
			{
				printf("No.\n");
				printf("FINISH\n");
		}
	}
	return 0;
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章