题目链接
题目梗概
从给出的一串包含六个单词的字符串中提取密码。
提取过程如下:
- 将表示数字的单词转换为数字。
- 取 数字^2 % 100。如:4 得到 16, 12 得到 44 ,2 得到 04
- 将得到的多个两位数,排列组合,输出最小数。
解题思路
- 单词与数字的对应关系,采用哈希表存储,识别方便。
- 寻找排列组合最小的数,其实将这些两位数(00,04,16这些都先算作两位数)从小到大排列,这样组合的数字即为答案。至于为什么这样排列就是答案,我们可以这样想。如果我们要排列的不是多个两位数,而是多个一位数,那从小到大排列得到就是最小数,这个应该能够理解。同理,其实这里的两位数和一位数的情况时完全一样的。
完整代码
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
map<string, int> m;
m["one"]=1;m["two"]=2;m["three"]=3;m["four"