題目連結:
給定一正整數 n (n ≦ 100),而你可以在其旁邊加上一個 ≦ n ÷ 2 的正整數(當然可以不加)。同樣地,你也可以在新加的數字的左邊加上 ≦ 該數字一半的正整數。此步驟可以重複直到無法加上數字為止。
例如:n = 6,則可以產生出 6 、 16 、 26 、 36 、 126 、 136 等六個數字。
求給定 n ,可以產生出多少個數字(過程不同,但是最後生成出來的數字是一樣的算做不同的數字)。請輸出生成數字的個數,以及數字之值(需由小排到大)。輸出格式請參見範例輸出。
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 的正整數。期間順便紀錄生出了哪些數字。
最後,把所有生成的數字排序,再輸出即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。