本文共 1214 字,大约阅读时间需要 4 分钟。
暴力求解:从前到后搜素将这段文章中的单词,去比对它前面的其它单词,如无重复,则单词数+1
#include#include #include #include #include using namespace std;char s[10005]; //主字符串,用于存储文章char s0[10005]; //s0,s1用于存储用来匹配的单词char s1[10005];int main(){ int ans=0,start=1; // int i=0,j=0,k,len,flag,p,f; char c; while((c=getchar())!='#') { if(c!='\n') { s[i++]=c; //记录 } else { s[i]='\0'; len=strlen(s);start=0; //start标记单词是否已经开始 for(i=0;i<=len;i++) { if(s[i]!=' '&&i!=len) //s[i]既不是空格也不是'\0',说明单词已经开始了 start=1; else start=0; if(start) { s0[j++]=s[i]; //开始了,就记录这个单词 } else //结束后,开始匹配 { if(j!=0) //j=0,说明s0是空串,连单词都没有,直接跳过,免得出现什么意外 { s0[j]='\0'; flag=0;f=p=0; //flag表示s0,s1两个单词是否相同,是为1,不是为0,一开始初始为0 for(k=0;k<=i-j-1;k++) { if(s[k]!=' '&&k!=i-j-1) f=1; else f=0; if(f) s1[p++]=s[k]; else { s1[p]='\0';//printf("%s0%s\n",s0,s1); if(strcmp(s1,s0)==0) { flag=1; //相同,可以结束了 break; } p=0; //莫忘了这步 } } if(!flag) ans++; //无重复,ans++ j=0; //莫忘了这步 } } } printf("%d\n",ans); ans=0;i=0; //莫忘 } } return 0;}
转载地址:http://pbdci.baihongyu.com/