杭电oj2072

因为一直不能ac先发这里,希望有看到的大佬能指点一二。

先讲一下我的基本思路,首先将一整行数据保存在数组中,接着遍历数组,根据空格将每个单词存入二维数组中,最后遍历二维数组,找出其中不同的单词并计数。

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int cmp(char s[]){
 5     char o[100][100],p[100][100];  //定义两个二维数组,第一个用于存放所有单词,第二个用于遍历第一个数组,将其中不同的单词存入第二个中
 6     int i,len,j=0,k=0,count,num=0,flag;
 7     len = strlen(s);
 8     for(i=0;i<len;i++){     //遍历输入的字符串,根据空格将每个单词存入第一个二维数组
 9         if(s[i]==' '){o[j][k]='\0';j++;k=0;continue;}
10         else{o[j][k++] = s[i];}
11         
12     }
13     o[j][k]='\0';count=0;
14     for(i=0;i<=j;i++){     //遍历第一个数组,将不同的单词存入第二个二维数组
15         flag = 0;
16         for(num=0;num<=count;num++){
17             if(strcmp(o[i],p[num])==0){flag=1;break;}
18         }
19         if(flag==0){strcpy(p[count],o[i]);count++;}
20     }
21     return count;
22 }
23 
24 int main(){
25     char s[10000];
26     int sum,k,m;
27     while(gets(s) && strstr(s, "#") == NULL){
28         sum = cmp(s);
29         m=0;
30         for(k=0;k<strlen(s);k++){  //判断如果输入全为空格,最后就输出0
31             if(s[k]==' '){m++;}
32         }
33         if(m==strlen(s)){printf("0\n");}
34         else{printf("%d\n",sum);}
35 
36     }
37 }

程序可以成功运行,相关参数输入也没问题,就是不能ac,不知错在哪里了.....

posted @ 2019-03-01 19:13  Ragd0ll  阅读(395)  评论(0编辑  收藏