Advertisement

密文搜索(蓝桥杯2015年真题)

阅读量:

福尔摩斯从X星获得了份由小写字母组成的资料。他的助理提供了另一份文件:其中包含了许多长度为8的密码列表。通过仔细分析这份文件的内容,在此前那份材料中竟然隐藏着许多被打乱顺序但意义完整的密码。

请在第一份资料中搜索可能隐藏的密码位置,请考虑所有可能的密码排列

数据格式:

一个由小写字母构成的字符串s被定义为输入参数。
随后将提供一个整数n(满足1 ≤ n ≤ 1,000),表示接下来会有n个密码条目。
这些密码条目均为仅包含小写字母的字符串,并且每个长度均为8个字符。

要求输出:
一个整数, 表示每行密码的所有排列在s中匹配次数的总和。

例如:
用户输入:
aaaabbbbaabbcccc
2
aaaabbbb
abcabccc

则程序应输出:
4
思路:题目涉及到了全排列问题。
因此可以直接调用STL库中的next_permutation函数(在调用前请确保已排序)。
每次生成一个全排列后立即进行检查。
检查给定子串是否存在于主字符串中。
可利用STL中的s.find函数来实现这一功能。
如果存在返回的位置不是npos,则表示找到了匹配;否则返回string::npos.

复制代码
    #include <bits/stdc++.h>
    using namespace std;
    string s,a[1001];
    int

全部评论 (0)

还没有任何评论哟~