本题链接:点击打开链接
本题大意:
本题给出两个字符串,假设旁边有一空栈,两字符串以何种方式进栈可以清空两字符串数组,输出进出栈方式,若不能清空两字符数组,则输出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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/lsgbb/article/details/47617741