HDU 2072 单词数 map的应用
来源:互联网 发布:遗传算法 机械应用 编辑:程序博客网 时间:2024/06/05 19:23
题目链接
题目大意:统计一篇文章里不同单词的总数
思路:简单map
WA两次:细节细节细节
AC代码:
#include <iostream>#include <stdio.h>#include <map>#include <string>using namespace std;int main(){ string str; while(getline(cin,str) && str[0] != '#')//注意getline的用法 { string a; map<string,int> mp; mp.clear(); int ans = 0; for(int i = 0; i < str.length(); i++) { int flag = 0; while(str[i] >= 'a' && str[i] <= 'z') { a += str[i++]; flag = 1; } if(mp[a] == 0 && flag) { ans++; mp[a] = 1; } a.clear();//a.clear被我放到if里面了,WA了两次 } printf("%d\n", ans); }}
写这题的时候发现了一个奇怪的地方,输出用的ans记录的单词数,但是如果用mp.size()输出,在全部都是空格的情况下会输出1,多个空格的时候也会多输出,:-(
奇怪代码:
#include <iostream>#include <stdio.h>#include <map>#include <string>using namespace std;int main(){ string str; while(getline(cin,str) && str[0] != '#') { string a; map<string,int> mp; mp.clear(); int ans = 0; for(int i = 0; i < str.length(); i++) { int flag = 0; while(str[i] >= 'a' && str[i] <= 'z') { a += str[i++]; flag = 1; } if(mp[a] == 0 && flag)//因为判断mp[a] == 0的时候已经把a插入mp里了,所以会多输出,写成if(flag && !mp[a])就能过了 mp[a] = 1; a.clear(); } printf("%d\n", mp.size()); }}
阅读全文
1 0
- HDU 2072 单词数 map的应用
- hdu 2072 单词数(map的简单应用)
- HDU 2072 单词数(map)
- HDU 2072 单词数 map
- HDU 2072 单词数 【map】
- HDU 2072 单词数 (STL map)
- HDU 2072 单词数 (map)
- HDU 2072 单词数
- hdu 2072 单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- Hdu 2072 - 单词数
- Hdu 2072 单词数
- hdu 2072-单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- XML生成(四):dom4j生成
- 全文索引原理详解
- c语言:实现一个栈
- 给eclipse装sts(Spring)插件
- Akka 笔记一
- HDU 2072 单词数 map的应用
- 控件的使用---ToolTip
- c++ 易错题
- 笔记本电脑同时连接有线网络和无线网络时,如何判断实际连接的网络
- c语言实现判断字符串是不是回文
- 如何使用prototype来美化自己的代码?
- Github 开源:使用 .NET WinForm 开发所见即所得的 IDE 开发环境(Sheng.Winform.IDE)【2.源代码简要说明】
- MySQL5.7.03 更换高版本到 5.7.17安装过程及发现问题解决方案
- 练习 2017-08-22 文件拷贝,包含子文件夹