算法竞赛入门 5.3.2 字母重排
2014-06-27 15:44
92 查看
重点:
1.用vector保存字典单词;
2.用sort函数对字典单词排序;
3.匹配每个单词,遍历一次字典(可以对字典的单词和查找单词按字符排序,或者用map统计每个字符出现的次数间接比较大小)
遗留问题:???
第24行代码改为:
程序会发生运行错误,觉得代码没错。。。
代码如下:
1.用vector保存字典单词;
2.用sort函数对字典单词排序;
3.匹配每个单词,遍历一次字典(可以对字典的单词和查找单词按字符排序,或者用map统计每个字符出现的次数间接比较大小)
遗留问题:???
第24行代码改为:
for(vector<string>::size_type i = dicLength-1 ; i>=0 ; i--){
程序会发生运行错误,觉得代码没错。。。
代码如下:
#include <iostream> #include <vector> #include <map> #include <stdio.h> #include <algorithm> using namespace std; int main() { freopen("test.in","r",stdin); // freopen("test.in",stdin); vector<string> dic; string s; while((cin >> s) && s != "******"){ dic.push_back(s); } sort(dic.begin() ,dic.end()); while(cin >> s){ int first = 1; int dicLength = dic.size(); for(vector<string>::size_type i = 0 ; i<dicLength ; i++){ string temps = dic[i]; // cout << dicLength-1 << " " << i <<" " << temps << endl; map<char,int> counter1,counter2; if(temps.length() == s.length()){ for(string::size_type j=0 ; j<temps.length() ; j++){ counter1[temps[j]]++; counter2[s[j]]++; } } if(counter1 == counter2 && counter1.size()!=0){ if(first == 1){ cout << temps; first = 0; } else{ cout << " " << temps; } } } if(first == 1){//not find cout << ":("; } cout << endl; } return 0; }
相关文章推荐
- 算法竞赛入门——字母重排
- {算法竞赛入门经典}第二章 文件操作 重定向及fopen版本
- {算法竞赛入门经典}第三章 蛇形填数 边界预判
- 算法竞赛-入门经典 第二章上机练习
- 算法-java版算法竞赛入门解题代码-第3章习题
- 算法-java版算法竞赛入门解题代码-第2章习题
- {算法竞赛入门经典}第一章 程序设计入门
- 算法竞赛入门经典 例题8-1
- 算法竞赛入门经典 例题9-1
- 算法竞赛入门学习
- 算法竞赛入门经典 例题7-2 埃及分数
- 20100617--算法竞赛入门经典 语言篇读书笔记
- 算法竞赛入门经典 2.1 for 循环
- 算法竞赛入门经典 2.1 for 循环
- 算法竞赛入门经典 例题9-1
- {算法竞赛入门经典}第二章 习题解答及例题小结
- 算法竞赛入门经典 1.1 算术表达式
- 算法竞赛入门经典 第二章 上机练习(C++代码)
- 算法竞赛入门经典chapter4:4-1孪生素数
- 算法竞赛入门经典 7.5.3 八数码问题