杭电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,不知错在哪里了.....