PKU 2159 Ancient Cipher
http://poj.org/problem?id=2159
古代ローマでは二つの暗号化が使われていた。
一つは文字を別の文字に置き換えるもの。
もう一つは文字の順番を一定の規則で並び替えるというもの。
この二つの手法が合わさって適用された文とそれを復号したものと予想される文が与えられる。
このとき、暗号文から与えられた複合文が生成可能かどうかを判定する問題。
文が長いので後回しにしていた問題。最初意味がわからなくてはまりました。
異なる文字の出現数を比べればOKのよう。
main(){ string en,de; cin>>en>>de; map<char,int> s1,s2; rep(i,en.size()){ s1[en[i]]++; s2[de[i]]++; } vector<int> v1,v2; FOR(miter,s1)v1.pb(miter->S); FOR(miter,s2)v2.pb(miter->S); sort(ALL(v1)); sort(ALL(v2)); if(v1==v2)cout<<"YES"<<endl; else cout<<"NO"<<endl; }