• 历届题目 密文搜索


    题目描述

    福尔摩斯从X星收到一份资料,全部是小写字母组成。
    他的助手提供了另一份资料:许多长度为8的密码列表。
    福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。
    请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。要考虑密码的所有排列可能性。

    输入

    输入第一行:一个字符串s,全部由小写字母组成,长度小于1024*1024
    紧接着一行是一个整数n,表示以下有n行密码,1<=n<=1000
    紧接着是n行字符串,都是小写字母组成,长度都为8

    输出

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

    样例输入

    aaaabbbbaabbcccc
    2
    aaaabbbb
    abcabccc
    样例输出
    4

    分析

    把字符串每8个每8个字符的扫描,每一次扫描利用函数substr()存入一个字典中,存入之前要排序。
    然后遍历n个字符串,记录结果

    代码

    #include <string>
    #include <string.h>
    #include <cmath>
    #include <algorithm>
    #include <iostream>
    #include <map>
    #define inf 100000
    using namespace std;
    map<string, int> st;
    int main(){
    	string s = "";
        cin >> s;
        int n = s.length();
        for(int i = 0; i + 7 < n; i++){
        	string t = s.substr(i, 8);
        	sort(t.begin(), t.end());
        	st[t]++;//set长度为8的子串
    	}
        cin >> n;
        int ans = 0;
        while(n--){
            cin >> s;
            sort(s.begin(), s.end());
            ans += st[s];
        }
        cout << ans << endl;
    }
    



  • 相关阅读:
    JavaScript 23 Window
    JavaScript 22 自定义对象
    JavaScript 21 Math
    History 7 : Christianity, Science, and The Enlightenment
    History : The Atlantic Slave Trade
    History 6 : Aztec and Inca Empires / African empires 8001500
    003 几个python编程例子
    006 网络的瓶颈效应
    0212 Logistic(逻辑)回归
    002 用Python打印九九乘法表与金字塔(*)星号
  • 原文地址:https://www.cnblogs.com/woxiaosade/p/10849939.html
Copyright © 2020-2023  润新知