hdu2072 map

    xiaoxiao2021-03-25  64

    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。 Input 有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。 Output 每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。 Sample Input you are my friend # Sample Output 4

    view:map的简单应用,注意多个空格的坑点;

    #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<iostream> #include<map> #define max_n 2000000 using namespace std; char ch[max_n],s[max_n]; map<string,int> q; //map的对应关系; int main() { while(1) { q.clear(); //清空map ; gets(ch); if(ch[0]=='#') break; int len=strlen(ch); ch[len]=' '; int k=0,sum=0; bool flag=false; for(int i=0;i<=len;i++) { if(ch[i]!=' ') { s[k++]=ch[i]; flag=true; } else if(flag) { flag=false; s[k++]='\0'; //切记注意字符串结束标志; if(q[s]==0) { q[s]=1; sum++; } k=0; } } //map<string,int>::iterator it;//it是指针类型,迭代器把it定义成指针型结构体; //for(it=q.begin();it!=q.end();it++) //map的开始和结束; //cout<<it->first<<endl; //如果是字符串用c++,如果是其他的,直接printf; printf("%d\n",sum); //printf("%d\n",q.size()); map的大小,和sum值一样; } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-39109.html

    最新回复(0)