演算法競賽入門經典 例題4 1

2021-09-27 13:32:43 字數 1300 閱讀 8978

uva1339

ancient cipher

題目意思為判斷明文是否可以經過位置變換以及字母替換得到密文。因為不需要輸出替換方案,只判斷存在性,那就先不考慮搜尋。

位置變換不用考慮,因為只要長度一樣,就肯定能逆回去,關鍵是字母替代。可以把明文和密文先進行排序,然後看模式是否相同,比如題目中第一組測試資料jwpudjstvpvictorious排序之後分別變為:

djjppsuvw

ciioortuv

而最後一組資料neercisthebestsecretmessages排序之後變為:

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秒,點一首超長的就能多唱好久。按照給定歌曲的順序,依次決定要不要唱這首歌就好了。如果不唱...