1.Link:http://poj.grids.cn/practice/2820/
2.content
- 總時間限制:
- 1000ms
- 內存限制:
- 65536kB
- 描述
- 古羅馬帝王有一個包括各種部門的強大政府組織。其中有一個部門就是保密服務部門。為了保險起見,在省與省之間傳遞的重要文件中的大寫字母是加密的。當時最流行的加密方法是替換和重新排列。
替換方法是將所有出現的字符替換成其它的字符。有些字符會碰巧替換成它自己。例如:替換規則可以是將'A' 到 'Y'替換成它的下一個字符,將'Z'替換成 'A',如果原詞是 "VICTORIOUS" 則它變成 "WJDUPSJPVT"。
排列方法改變原來單詞中字母的順序。例如:將順序 <2, 1, 5, 4, 3, 7, 6, 10, 9, 8> 應用到 "VICTORIOUS" 上,則得到"IVOTCIRSUO"。
人 們很快意識到單獨應用替換方法或排列方法,加密是很不保險的。但是如果結合這兩種方法,在當時就可以得到非常可靠的加密方法。所以,很多重要信息先使用替 換方法加密,再將加密的結果用排列的方法加密。用兩中方法結合就可以將"VICTORIOUS" 加密成"JWPUDJSTVP"。
考古學家最近在一個石台上發現了一些信息。初看起來它們毫無意義,所以有人設想它們可能是用替換和排列的方法被加密了。人們試著解讀了石台上的密碼,現在他們想檢查解讀的是否正確。他們需要一個計算機程序來驗證她,你的任務就是寫這個驗證程序。- 輸入
- 輸入有兩行。第一行是石台上的文字。文字中沒有空格,並且只有大寫英文字母。第二行是被解讀出來的加密前的文字。第二行也是由大寫英文字母構成的。
兩行字符數目的長度都不超過計劃100。- 輸出
- 如果第二行經過某種加密方法後可以產生第一行的信息,輸出 "YES",否則輸出"NO"。
- 樣例輸入
JWPUDJSTVP VICTORIOUS- 樣例輸出
YES
3.code
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> NUM = MAX 200 res[ memset(res,,()*NUM* str[ (i = ; i < ; i++) cin>> (i = ; i < ; i++ len = (j = ; j < len; j++ res[i][(str[i][j]-)]++ (i = ; i < NUM; i++ (j = ; j < NUM; j++ (res[][i] == res[][j]) (j < NUM) res[][j] = - (i < NUM) cout<<<< cout<<<< }
4.method
(1) statics the character num