当前位置:
首页 >
[蓝桥杯2015决赛]密文搜索
发布时间:2023/12/4
31
豆豆
生活随笔
收集整理的这篇文章主要介绍了
[蓝桥杯2015决赛]密文搜索
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
福尔摩斯从X星收到一份资料,全部是小写字母组成。
他的助手提供了另一份资料:许多长度为8的密码列表。
福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。
请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。
要考虑密码的所有排列可能性。
输入
输入第一行:一个字符串s,全部由小写字母组成,长度小于1024*1024
紧接着一行是一个整数n,表示以下有n行密码,1<=n<=1000
紧接着是n行字符串,都是小写字母组成,长度都为8
输出
一个整数, 表示每行密码的所有排列在s中匹配次数的总和。
样例输入
aaaabbbbaabbcccc
2
aaaabbbb
abcabccc
样例输出
4
提示
第一个密码匹配了3次,第二个密码匹配了1次,一共4次。
解题思路:
因为密码可以随机排列(全排列),故只要密码各个字母出现的次数与原字符串某连续8位各个字母出现的次数相同就代表一个答案。
代码如下:
#include <iostream> #include <cstring> #include <map> #include <algorithm> using namespace std; map<string, int>mp;int main() {int n;string s;cin >> s >> n;for (int i = 0; i <= s.length() - 8; i++) {string str = s.substr(i, 8);//每次截取8位sort(str.begin(), str.end());//排序mp[str]++;}int ans = 0;for (int i = 0; i < n; i++) {string b;cin >> b;sort(b.begin(), b.end());//排序ans += mp[b];//加上原字符串中符合这个密码的全部情况}cout << ans << endl;return 0; }总结
以上是生活随笔为你收集整理的[蓝桥杯2015决赛]密文搜索的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: icp怎么办理(icp怎么申请)
- 下一篇: [蓝桥杯2015决赛]积分之迷-枚举(水