Uva10625 GNU = GNU'sNotUnix
寫題解讓自己可以review一次自己寫了甚麼…
幾百年沒刷題,程式能力依然爛QQ
- 題目
- 有一段字串需要照他的規定做轉換,例如例題的G就要換成GNU’s
- 給了原字串要問經過幾次轉換,他詢問的該個字母有幾個,最多轉換10000次
- 每個答案要間隔一個換行
解題思路
- 因為題目只是將一個字母轉換成字串,因此我們只需要計算每個字母在每次轉換的總數有幾個,不需照著做轉換。
- 而題目有提到會出現的字元Ascii是從33~126之間,因此只要維護一個dp表格(我是直接開200)
- 用tmp紀錄字母在轉換時會增加多少個不同的字母數量,接著看上一層狀態該個字母有多少就乘以他的幾倍,紀錄到下一格狀態
- 如果紀錄每次狀態,陣列空間會太大,因此每次轉換過後,需要將結果狀態回灌給上一層,這樣只需要兩層的空間。
code