uva1339
ancient cipher
題目意思為判斷明文是否可以經過位置變換以及字母替換得到密文。因為不需要輸出替換方案,只判斷存在性,那就先不考慮搜尋。
位置變換不用考慮,因為只要長度一樣,就肯定能逆回去,關鍵是字母替代。可以把明文和密文先進行排序,然後看模式是否相同,比如題目中第一組測試資料jwpudjstvp
和victorious
排序之後分別變為:
djjppsuvw
ciioortuv
而最後一組資料neercisthebest
和secretmessages
排序之後變為:
bceeeehinrsstt
aceeeegmrsssst
對比可以發現如果是一對明文密文變換,那麼出現次數相同的字母數量是一樣多的,這也就是書上說的計數然後排序的方法(然而我並沒有想到排序,而是想再進行一次計數,看看字母數量是不是一樣多。。。)。
#include
#include
#include
#include
using
namespace std;
bool
check
(const string &strcipher,
const string &strplain)
for(size_t i =
0; i < strplain.
size()
; i++
)sort
(vicntcipher.
begin()
, vicntcipher.
end())
;sort
(vicntplain.
begin()
, vicntplain.
end())
;for
(size_t i =
0; i < vicntcipher.
size()
; i++
)return
true;}
intmain()
return0;
}/*jwpudjstvp
victorious
mama
rome
haha
hehe
aaaaaa
neercisthebest
secretmessages
*/
演算法競賽入門經典例題
7744問題 問題 輸出所有形如aabb的四位完全平方數 即前兩位數字相等,後兩位數字也相等 include include int main 開燈問題 include include define maxn 1010 int a maxn int main int n,k,first 1 mems...
演算法競賽入門經典 例題4 5
uva512 spreadsheet tracking 給定乙個 和一些操作序列,輸出給定單元格在這些操作後的位置。如果在整個 上模擬操作,那麼就需要記錄原始 和最終 中每乙個單元格的對應關係,比如可以通過給單元格內容編號,新加入的單元格編號全0,刪除原始單元格則編號全部改 1,最後在整個 中搜尋原...
演算法競賽入門經典 例題9 5
uva 12563 jin ge jin qu hao 這題的背景我也是服了。這是乙個揹包問題,可以簡述為有n首歌,每首歌只能唱1次,要求在所剩不多的t秒內,唱盡可能多的歌,同時唱得盡可能的長。這樣即使最後只剩1秒,點一首超長的就能多唱好久。按照給定歌曲的順序,依次決定要不要唱這首歌就好了。如果不唱...