码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1022 Train Problem I

时间:2015-08-13 22:30:00      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

本题链接:点击打开链接

本题大意:

        本题给出两个字符串,假设旁边有一空栈,两字符串以何种方式进栈可以清空两字符串数组,输出进出栈方式,若不能清空两字符数组,则输出No具体输出请参见题目。

解题思路:

       就是模拟栈,使数组一中元素逐个进栈,然后看与数组二中开头元素是否相等,若相等则出栈,并清除数组二的开头元素。每次进栈出栈都可用另外一数组做相应标记,若最终数组二中所有元素均可清除,则表示可以完成,否则就无法完成。

参考代码:

#include<stdio.h>
#include<string.h>
char stack[220];
char str1[220],str2[220];
int result[220];
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		scanf("%s %s",str1,str2);
		int top=0,i=0,j=0,k=0;
		while(i<n)
		{
			stack[++top]=str1[i++];
			result[k++]=1;
			while(top&&stack[top]==str2[j])
			{
				top--;j++;
				result[k++]=0;
			}
		}
		if(j==n)
		{
			printf("Yes.\n");
			for(int i=0;i<k;i++)
			{
				if(result[i])
					printf("in\n");
				else
					printf("out\n");
			}
		}			
		else
			printf("No.\n");
		printf("FINISH\n");
	}
	return 0;
}


 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu 1022 Train Problem I

标签:

原文地址:http://blog.csdn.net/lsgbb/article/details/47617741

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!