zoukankan      html  css  js  c++  java
  • NBUT 1117 Kotiya's Incantation

    题意:判断两个字符窜是否一样,不一样,或相似,字符窜包含大小写字母,'\n','\t','  ',‘\r’,所以一样所有的都一样,相似是只要字母顺序相同就行了,其他的都不一样

    分析:这是一道好题,在给我几天如果不看别人代码和解题报告打死我想不到做不出来,比赛的时候没做出来,纯属正常确实不会,不过还是很多人做出来,厉害。这道题否定了我以前的看法,两个字符窜的区别一定是回车,但是这句话Each string is breaked by character '-'.也就是说每个字符窜遇到‘-’判断结束,第一个字符窜结束后不用在回车后进行输入第二个字符窜,若输入回车后则是第二个字符窜的第一个字符,这里还学到了知道EOF是两个字符所以scanf需要输入两次^z,如果在第二个字符窜中不去判断EOF的话很可能造成Runtime error [access violation],因为会在第二个字符窜那里死循环了,比如a-a-\n^z^z这样就死循环了

    c=getchar()只要判断c是否等于-1就行输入依次就可以

    还有输入字符除了getchar()还有scanf(“%c”)

    #include<stdio.h>
    #include<string.h>
    
    const int MAXN=10000;
    
    int main()
    {
        char str1[MAXN],str2[MAXN],rem1[MAXN],rem2[MAXN];
        int i;
        int cas1,cas2,tes1,tes2;
        char ch;
        while(scanf("%c",&ch)!=EOF)
        {
            tes1=0,tes2=0;
            cas1=0;
            if(ch=='-') 
            {
            }
            else
            {
                str1[0]=ch;
                cas1=1;
                while(1)
                {
                    ch=getchar();
                    if(ch==-1) return 0;//就是这里,EOF占两个字符。。。
                    if(ch=='-') break;
                    str1[cas1++]=ch;    
                }
                
            }
            str1[cas1]='\0';
            cas2=0;
            while(scanf("%c",&ch))
            {
                if(ch=='-') break;
                str2[cas2++]=ch;    
            }
            str2[cas2]='\0';
            if(!strcmp(str1,str2)) printf("SAME\n");
            else
            {
                for (i=0;i<str1[i];i++)
                {
                    if( (str1[i]>='A' && str1[i]<='Z') || (str1[i]>='a' && str1[i]<='z')) rem1[tes1++]=str1[i];
                }
                rem1[tes1]='\0';
                for (i=0;str2[i];i++)
                {
                    if( (str2[i]>='A' && str2[i]<='Z') || (str2[i]>='a' && str2[i]<='z')) rem2[tes2++]=str2[i];
                }
                rem2[tes2]='\0';
                if(!strcmp(rem1,rem2)) 
                {
                    printf("SIMILAR\n");
                }
                else printf("DIFFERENT\n");
            }
        }
        return 0;
    }

     

  • 相关阅读:
    (转)A*算法详解及习题
    BZOJ1444[Jsoi2009]有趣的游戏——AC自动机+概率DP+矩阵乘法
    交通——set+dsu on tree
    [Codeforces1132G]Greedy Subsequences——线段树+单调栈
    BZOJ4482[Jsoi2015]套娃——贪心+set
    BZOJ4477[Jsoi2015]字符串树——可持久化trie树
    BZOJ4475[Jsoi2015]子集选取——递推(结论题)
    [UOJ86]mx的组合数——NTT+数位DP+原根与指标+卢卡斯定理
    BZOJ2428[HAOI2006]均分数据——模拟退火
    BZOJ4712洪水——动态DP+树链剖分+线段树
  • 原文地址:https://www.cnblogs.com/zsboy/p/2607151.html
Copyright © 2011-2022 走看看