hdu 1022

来源:互联网 发布:159女儿村输出数据 编辑:程序博客网 时间:2024/05/31 19:25
点击打开链接 点击打开链接Hdu 1022 解题报告

正确代码:

#include<stdio.h>

int main ()

{

char a[100],b[100],s[100];

int f[100],n,i,j,top=0,c=1;

while (scanf("%d",&n)!=EOF)

{

getchar();

for (i=0;i<n;i++)

a[i]=getchar();

getchar();

for (i=0;i<n;i++)

b[i]=getchar();

getchar();

j=0;

f[0]=0;

s[top]=a[0];

for (i=1;i<=n;i++)

{

while (top>=0&&s[top]==b[j])

{

j++;

top--;

f[c++]=1;

}

if (i!=n)

{

top++;

s[top]=a[i];

f[c++]=0;

}

}

if (j==n)

{

printf("yes.\n");

for (i=0;i<2*n;i++)

if (f[i]) printf("out\n");

else printf("in\n");

printf ("FINISH\n");

}

else printf ("no.\nFINISH\n");

}

return 0;

}

遇到的问题:

(1)定义时,把c=0,这样for循环时,从i=0,开始,使得在if(i!=0)中,循环三次,top=3,与数组中的top=2不符,顾不能得到正确结果。

(2)初始化时没有s[top]=a[0],使第一个判断不能进行。

不懂的问题:

for (i=1;i<=n;i++)

{

while (top>=0&&s[top]==b[j])

{

j++;

top--;

f[c++]=1;

}

if (i!=n)

{

top++;

s[top]=a[i];

f[c++]=0;

}

}

这里一定要用while if吗?用if else if为什么不行?

结语:

写了好多次,总是出错,今天终于知道了.

第一篇博客,以后要每天写。。。