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为什么不行?
结语:
写了好多次,总是出错,今天终于知道了.
第一篇博客,以后要每天写。。。
- hdu 1022
- HDU 1022
- hdu 1022
- HDU 1022
- hdu 1022
- hdu 1022
- hdu 1022
- hdu 1022
- hdu 1022
- hdu 1022
- hdu 1022
- 【HDU】1022
- hdu 1022
- HDU 1022
- hdu 1022
- hdu 1022
- hdu 1022
- HDU 1022
- java 正则表达式的使用Pattern和Matcher
- C语言判断输入是否是数字
- J2SE简单介绍+基础语法
- java常见面试题
- 通过 ant 解决 android 版本的问题
- hdu 1022
- win8 app scrollviewer ZoomMode
- Entity Framework Code First 学习日记(10)
- C#:属性
- Servlet是多线程的,最好定义局部变量,不要定义全局变量
- 笔记:des加解密,php和.net版的实现
- 吸电流、拉电流、灌电流、上下拉电阻、高阻态
- 黑马程序员_java多态机制
- 行为的抽象即是接口(Interface)