這道題中original中不同的字母會首先對映到別的字母,然後任意排列。所以只需要有沒有這樣的對映存在就好,不必把排列也確定下來。做法是統計每個字母出現的次數,然後將按照從小到大排序,一一對比原排列和加密後的,看是否有不同。如果沒有,說明存在這樣的對映(對比本身就是一種對映)。
thestoryofsnow
2159
accepted
196k
0msc++
1189b
/*
id: thestor1
lang: c++
task: poj2159
*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
int main()
for (int i = 0; i < original.size(); ++i)
sort(encryptedcount.begin(), encryptedcount.end());
sort(originalcount.begin(), originalcount.end());
bool yes = true;
for (int i = 0; i < 26; ++i) }
if (yes)
else
return 0;
}
pku 2159 解題報告
很難看懂的題,單純地以它的sample去寫就是完全看錯題目了 查詢了網上的解題報告,發現跟密碼學有關,acm需要的知識果然是百科的 關鍵在於用這種加密方法加密後,密文和原文長度相同,字母出現的種類數量相同,每種字母出現的概率 次數 相同。code include iostream include s...
POJ 2159 分組密碼與流密碼
因為既要替換又要排列,而方法卻有很多種,無法明確確定。但是知道明文中一些相同字元出現的次數跟密文出現的次數相同。所以可以根據這一點來進行計算。include include include include include include include include include include...
poj解題報告 1328
不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...