給兩個等長大寫字符串 S1(密文)、S2(疑似明文)。判斷 S1 是否可由 S2 經過**任意替換密碼**(單表替換,字母一對一映射)再經**任意置換密碼**(字符重排)得到。長度 ≤ 100。
#include
#include
#include
using namespace std;
int main() {
char s1[105], s2[105];
while (gets(s1)) {
gets(s2);
int len1 = strlen(s1), len2 = strlen(s2);
if (len1 != len2) { puts("NO"); continue; }
int a[26]={0}, b[26]={0};
for (int i=0;i
POJ 2159 看似涉及密碼學,實則是「頻率多重集相等」判斷。關鍵在於理解替換+置換組合後**唯一不變量是字母頻率分布**。排序比較即可,極簡高效。