yiqian9585 2017-02-04 14:18 采纳率: 0%
浏览 1099
已结题

hdu 1022 WA求解决啊啊啊 很多数据都试了。。

我知道可以用stack。。请不要copy别人的代码。帮我看看哪个数据通不过好不好[可怜]

 #include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std ;
int main()
{
    int n;
    bool flag[20];
    char in[9],out[9],stac[9];
    char str[][4] = {"out","in"};
    while(scanf("%d%s%s",&n,in,out) != EOF){
        memset(flag,false,sizeof(flag));
        memset(stac,0,sizeof(stac));
        int n_stack = 0,n_out = 0,n_in = 1,n_flag = 1;
        stac[0] = in[0];
        flag[0] = true;
        while(n_in != n || n_out != n){
            if(stac[n_stack] == out[n_out]){
                flag[n_flag ++] = false;
                stac[n_stack --] = 0;
                n_out ++;
            }
            else {
                flag[n_flag ++] = true;
                stac[++ n_stack] = in[n_in ++];
            }
        }
        if(n_stack == -1){ 
            printf("Yes.\n");
            for(int i=0 ; i<=n*2-1 ; i++)
                printf("%s\n",str[flag[i]]);
        }
        else
            printf("No.\n");
        printf("FINISH\n");
    }
    return 0 ;
}
  • 写回答

3条回答 默认 最新

  • yiqian9585 2017-02-04 14:23
    关注

    http://acm.hdu.edu.cn/showproblem.php?pid=1022
    原题网址:
    这是我第一遍AC的代码:

     #include <iostream>
    #include <stdio.h>
    #include <cstring>
    using namespace std ;
    int main()
    {
        int n;
        bool flag[20];
        char in[9],out[9],stac[9];
        char str[][4] = {"out","in"};
        while(scanf("%d%s%s",&n,in,out) != EOF){
            memset(flag,false,sizeof(flag));
            memset(stac,0,sizeof(stac));
            int n_stack = 0,n_out = 0,n_in = 1,n_flag = 1;
            stac[0] = in[0];
            flag[0] = true;
            while(n_in <= n && n_out <= n){
                if(stac[n_stack] != out[n_out] && out[n_out] != in[n_in]){
                    flag[n_flag ++] = true;
                    stac[++ n_stack] = in[n_in ++];
                }
                else if(in[n_in] == out[n_out]){
                    flag[n_flag ++] = true;
                    flag[n_flag ++] = false;
                    n_in ++;
                    n_out ++;
                }
                else if(stac[n_stack] == out[n_out]){
                    flag[n_flag ++] = false;
                    stac[n_stack --] = 0;
                    n_out ++;
                }   
            }
            if(n_stack == -1){ 
                printf("Yes.\n");
                for(int i=0 ; i<=n*2-1 ; i++)
                    printf("%s\n",str[flag[i]]);
            }
            else
                printf("No.\n");
            printf("FINISH\n");
        }
        return 0 ;
    }
    

    这两个差别真的不大,但是上面哪个就是WA..查了半天...好心人帮我找找可以么?..强迫症又犯了.

    评论

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!