HDU 2072

来源:互联网 发布:改本地host变更域名 编辑:程序博客网 时间:2024/05/16 05:20
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
 


Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
 


Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
 


Sample Input
you are my friend#
 


Sample Output
4
 


Author
Lily
 


Source
浙江工业大学网络选拔赛
 


Recommend
linle   |   We have carefully selected several similar problems for you:  2074 2054 1251 2073 1020 

简直是够了,到处都是坑,好无语,就是因为我在统计完没有加上子字符串结束标志“\0”;一直WA,WA了好多次。。。。。。细节决定成败啊。。。。多努力。。。。。。

AC代码:

#include<stdio.h>
#include<string.h>
char b[1005][1005];
char c[1005];
int main(){
    int i,j,len,k,t,sum;
    while(gets(c)){
            k=0;
            t=0;
        if(c[0]=='#'){break;}
        len=strlen(c);
        for(i=0;i<len;i++){
            if(c[i]>='a'&&c[i]<='z'){ break;}
        }//找到第一个不为字符的下标
        if(i==len){ printf("0\n");continue;}
        for(;i<len;i++){
            if(c[i+1]>='a'&&c[i+1]<='z'&&c[i]==' '){
                 b[k][t]='\0';//特别重要的东西,没有就会WA
                 k++;
                 t=0;
            }
            if(c[i]>='a'&&c[i]<='z'){
                b[k][t++]=c[i];
            }
        }
        for(i=0;i<k+1;i++){
                for(j=i+1;j<=k;j++){
                      if(strcmp(b[i],b[j])==0&&b[i][0]!='0'){
                          b[j][0]='0';
                      }
                }
        }//把相同的首位字符置为‘0’;
        sum=0;
        for(i=0;i<k+1;i++){
            if(b[i][0]!='0'){
                sum++;
            }
        }
        printf("%d\n",sum);
    }
return 0;
}


面对如此水题却可以WA那么多次。。。。。


0 0
原创粉丝点击