切換
舊版
前往
大廳
主題

ZeroJudge - e463: 數數字 解題心得

Not In My Back Yard | 2019-10-15 22:44:47 | 巴幣 0 | 人氣 208

題目連結:


題目大意:
給定一正整數 n (n ≦ 100),而你可以在其旁邊加上一個 ≦ n ÷ 2 的正整數(當然可以不加)。同樣地,你也可以在新加的數字的左邊加上 ≦ 該數字一半的正整數。此步驟可以重複直到無法加上數字為止。

例如:n = 6,則可以產生出 6 、 16 、 26 、 36 、 126 、 136 等六個數字。

求給定 n ,可以產生出多少個數字(過程不同,但是最後生成出來的數字是一樣的算做不同的數字)。請輸出生成數字的個數,以及數字之值(需由小排到大)。輸出格式請參見範例輸出。



範例輸入:
6
10


範例輸出:
6
6 16 26 36 126 136
14
10 110 210 310 410 510 1210 1310 1410 1510 2410 2510 12410 12510


解題思維:
這題就是很單純地生出所有可能性(用 DFS 的精神去生即可)。用一個函數,並將一開始的 n 傳入此函數。然後遞迴在現在的數字左邊加加看所有 ≦ n ÷ 2 的正整數。期間順便紀錄生出了哪些數字。

最後,把所有生成的數字排序,再輸出即可。

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

創作回應

更多創作