杭电 HOJ 2072 单词数 解题报告
无奈的Wrong了N次,请教师兄后才搞定这题。。。注意消空格,用STL里的set做的,代码如下:
#include <iostream> #include <set> #include <string> using namespace std; int main() { set<string> st; char str[1000]; char s[100]; int len,slen; while (cin.getline(str,sizeof(str)) && str[0]!='#') { st.clear(); len=0; slen=strlen(str); while(str[len++]==' '); len--; while(len<slen) { sscanf(str+len,"%s",s); len+=strlen(s); while(str[++len]==' '); if(s[0]!='\0') st.insert(s); } cout<<st.size()<<endl; } }
网上另外找了一份代码,也贴进来:
#pragma warning(disable:4786) #include<iostream> #include<set> #include<string> using namespace std; int main() { set<string>word; char c; string s=""; while((c=cin.get())!='#') { while(c!=' '&&c!='\n') { s+=c; c=cin.get(); } if(s.length()) { word.insert(s); s=""; } if(c=='\n') { printf("%d\n",word.size()); word.clear(); s=""; } } }