题干:

lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。

Input

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

Output

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

Sample Input

you are my friend
#

Sample Output

4

解题报告:

    恕我直言这题是真鸡儿无聊,,你不用gets或者geline是死活AC不了的、、因为就算你再怎么神奇的操作,考虑的再严密,,他样例第一行万一 上来一个空格 然后就回车了、、你咋整?本来应该输出0的,,你就直接读入了,因为你不可能程序一开始就先读一个ch然后判读如果不是空格的话再存入字符串中啊!!那岂不是太麻烦了。,,,为了这个题没必要,于是直接上istringstream就好了。。。

AC代码:

#include<iostream>
#include<cstdio>
#include<sstream>
#include<set>
using namespace std;
int main()
{
    string s;
    while(getline(cin, s) && s != "#") {
        istringstream in(s);
        set<string> ss;
        string w;
        while(in>>w)
            ss.insert(w);
        cout << ss.size() << endl;
    }
    return 0;
}

WA代码:

#include<set>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#define ll long long
using namespace std;
string s;
set<string> ss;
int main()
{
	char ch;
	while() {
		 
		if(s[0] == '#') break;
		ss.clear();
		ss.insert(s);
		ch=getchar();
		if(ch != '\n') {
			while(cin>>s) {
				ch=getchar();
				if(s[0] == '#') break;
				ss.insert(s);
				if(ch=='\n') break;
			}	
		}
		printf("%d\n",ss.size());
	}
	return 0;
}