hdu 1022 Train Problem I

来源:互联网 发布:淘宝宝贝的无线端连接 编辑:程序博客网 时间:2024/05/01 21:51

本题链接:点击打开链接

本题大意:

        本题给出两个字符串,假设旁边有一空栈,两字符串以何种方式进栈可以清空两字符串数组,输出进出栈方式,若不能清空两字符数组,则输出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");elseprintf("out\n");}}elseprintf("No.\n");printf("FINISH\n");}return 0;}


 

 

0 0
原创粉丝点击