这道题和#42一样用map<string,int>就会很方便呢~但是这里很狡猾,给你的东西里有空格分开,那么怎么办呢?~
1) string相加,直接加起来是字符串合并的效果
2)getline:getline(cin,str); //cin:输入流;str:string对象getline函数从输入流的下一行读取,并保存读取的内容到str中,但不包括换行符
接下来就是一样的map偷懒Code:
#include <map>
#include <queue>
#include <cmath>
#include <memory>
#include <cctype>
#include <cstdio>
#include <string>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
map<string,int> m;
int main()
{
int n; cin>>n;
char c; scanf("%c",&c);
for(int i=0;i<n;i++)
{
string str;
getline(cin,str);
m[str]=1;
}
int cnt=0;
for(map<string,int>::iterator it=m.begin();it!=m.end();++it)
{
//cout<< it->first<<endl;
cnt++;
}
cout<<cnt<<endl;
return 0;
}