密文搜尋(滾動雜湊匹配子串)

2021-10-10 11:49:52 字數 1336 閱讀 2630

福爾摩斯從x星收到乙份資料,全部是小寫字母組成。

他的助手提供了另乙份資料:許多長度為8的密碼列表。

福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。

請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。

資料格式:

輸入第一行:乙個字串s,全部由小寫字母組成,長度小於1024*1024

緊接著一行是乙個整數n,表示以下有n行密碼,1<=n<=1000

緊接著是n行字串,都是小寫字母組成,長度都為8

要求輸出:

乙個整數, 表示每行密碼的所有排列在s中匹配次數的總和。

例如:使用者輸入:

aaaabbbbaabbcccc

2aaaabbbb

abcabccc

則程式應該輸出:

4這是因為:第乙個密碼匹配了3次,第二個密碼匹配了1次,一共4次。

資源約定:

峰值記憶體消耗 < 512m

cpu消耗 < 3000ms

#include

#include

#include

#include

#include

using

namespace std;

#define seed 7

//權string mima[

1000];

//用於儲存密碼

vector<

long

long

> hash_arr;

//儲存隱藏密碼的字串的雜湊值

long

long ans=0;

//計算結果

long

long

hash_

(string &str,

int bits)

//獲取字串bits位的雜湊值

return hash_num;

}void

bian_hash

(string &str)

//對隱藏密碼的字串自行編碼

intmain()

bian_hash

(s1)

;int size = hash_arr.

size()

;for

(int i=

0;iwhile

(next_permutation

(mima[i]

.begin()

,mima[i]

.end()

));//permutation求全排列

} cout

}

藍橋杯 密文搜尋

密文搜尋 福爾摩斯從x星收到乙份資料,全部是小寫字母組成。他的助手提供了另乙份資料 許多長度為8的密碼列表。福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。資料格式 輸入第一行 乙個字串s,全部由小寫字母組成...

歷屆題目 密文搜尋

福爾摩斯從x星收到乙份資料,全部是小寫字母組成。他的助手提供了另乙份資料 許多長度為8的密碼列表。福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。輸入第一行 乙個字串s,全部由小寫字母組成,長度小於1024 ...

2015 藍橋杯決賽 密文搜尋

福爾摩斯從x星收到乙份資料,全部是小寫字母組成。他的助手提供了另乙份資料 許多長度為8的密碼列表。福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。資料格式 輸入第一行 乙個字串s,全部由小寫字母組成,長度小於...