切換
舊版
前往
大廳
主題

ZeroJudge - e910: 108 p10. 解碼問題 解題心得

Not In My Back Yard | 2020-04-18 00:40:02 | 巴幣 2 | 人氣 174

題目連結:


題目大意:
給定以下的編碼表:
現在給定一個經由上述編碼加密的 01 字串,請輸出原有的明文。



範例輸入:
範例輸入一:
011111000111101111

範例輸入二:
101101110100111001001101100101111111110101011101000

範例輸入三:
010010010111010000101111001011111001000101110111101111000101110001101111011101011111001101011101011101111010001011101001110111101010101111100101100011011010110110101111010100101101010101100101111100001011111110100010000111100101001101011100111100111011100101111110111111101110010111110110111011011110110


範例輸出:
範例輸出一:
NTNU

範例輸出二:
CS ROCKS!

範例輸出三:
.!,?0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ


解題思維:
就是建立所有的編碼對應關係。對於 C++ 來說,可以將這些 01 編碼視為字串並放到 map 裡面對應的相應的字元。

也可以不使用 map ,單純將這些 01 字串當作一個二進位數字,並在相應的陣列位置儲存字元。但是因為有不少字元的編碼是以 0 開頭,所以有些前導 0 會被忽略而導致轉成二進位會跟另一個編碼衝突。解決方法是可以在所有編碼前面再加一個 1 ,這樣那些前導 0 就不會被忽略。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作