福爾摩斯從x星收到乙份資料,全部是小寫字母組成。
他的助手提供了另乙份資料:許多長度為8的密碼列表。
福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。
請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。
資料格式:
輸入第一行:乙個字串s,全部由小寫字母組成,長度小於1024*1024
緊接著一行是乙個整數n,表示以下有n行密碼,1
<=n<=1000
緊接著是n行字串,都是小寫字母組成,長度都為8
要求輸出:
乙個整數, 表示每行密碼的所有排列在s中匹配次數的總和。
例如:使用者輸入:
aaaabbbbaabbcccc
2aaaabbbb
abcabccc
則程式應該輸出:
4這是因為:第乙個密碼匹配了3次,第二個密碼匹配了1次,一共4次。
資源約定:
峰值記憶體消耗 < 512m
cpu消耗 < 3000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
思路
將長串每8個一組放到map中(鍵是串,值是串的個數),將短串排序後全排列,累加個數。很老實的做法
**
僅供參考
// 密文搜尋
#include
using
namespace
std;
string str;
map smap;
int n;
long res(0);
string sn[10001];
void init()
else
}}void doit()
}while(next_permutation(s,s+strlen(s)));
}} int main()
第六屆藍翔杯決賽 密文搜尋
密文搜尋 描述 福爾摩斯從x星收到乙份資料,全部是小寫字母組成。他的助手提供了另乙份資料 許多長度為8的密碼列表。福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。資料格式 輸入第一行 乙個字串s,全部由小寫字...
第六屆藍橋杯決賽試題 關聯賬戶
為增大反腐力度,某地 專門支隊,對若干銀行賬戶展開調查。如果兩個賬戶間發生過轉賬,則認為有關聯。如果a,b間有關聯,b,c間有關聯,則認為a,c間也有關聯。對於調查範圍內的n個賬戶 編號0到n 1 已知道m條因轉賬引起的直接關聯。現在希望知道任意給定的兩個賬戶,求出它們間是否有關聯。有關聯的輸出1,...
第六屆藍橋盃國賽C B組 密文搜尋
福爾摩斯從x星收到乙份資料,全部是小寫字母組成。他的助手提供了另乙份資料 許多長度為8的密碼列表。福爾摩斯發現,這些密碼是被打亂後隱藏在先前那份資料中的。請你編寫乙個程式,從第乙份資料中搜尋可能隱藏密碼的位置。要考慮密碼的所有排列可能性。資料格式 輸入第一行 乙個字串s,全部由小寫字母組成,長度小於...