題目:輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1、2、3一直到最大的3位數999.
(這道題在牛客上好像沒找到,我暫時把思路放上來,之後如果看到了再做。如果做完一遍發現還是沒有,那就自己在ide裡跑一遍。)
思路1:迴圈從1開始逐個列印,終止條件為10^n-1,輸入3,終止條件就是小於等於1000-1
思路2:由於上述問題並沒有規定n的範圍,因此需要考慮大數問題。最常用的方法是字串或者陣列來表達大數。當沒有到達終止條件時,就列印。如果呼叫庫函式strcmp比較表示數字的字串number和最大的n位數是否相等來停止的話,對於長度為n的字串,它的時間複雜度為o(n)。而通過發現在加1時如果第乙個數字發生進製,那麼已經達到最大的n位數了,時間複雜度為o(1)。字串長度n+1,前n位初始化為0。列印字串時,前面那些補位的0不應該列印出來,因此在列印時只有碰到第乙個非0的字元之後才開始列印,直至字串的結尾。這裡面判斷條件和列印都需要細看。
記錄常用的strlen(),strcmp(),memset()
記錄ascii碼表,'0'-48, 'a'-65 , 'a'-97
思路3:用遞迴表示全排列。每位數字其實都是0~9,把每一位都從0-9排列一遍就能得到所有的十進位制數,在列印時,排在前面的0不列印出來就可以了。
17 列印從1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 說明 題目要求列印 從1至最大的n位數的列表 因此需考慮以下兩個問題 最大的n位數 記為end 和位數n的關係 例如最大的1位...
17 列印從1到最大的n位數 python
題目 輸入數字n,按順序列印從1到最大的n位十進位制數。大整數問題 def print max n n res 0 for i in range n while not is max res res list plus 1 res print res def is max arrys for arr...
演算法 17 列印從1到最大的n位數
1 要列印從1到最大的n位數,題目要求把列印的數放在乙個陣列裡面,首先要確定這個陣列的長度是多少 pow 方法可返回 x 的 y 次冪的值。我們用這個函式方法可以求得陣列的長度 len math.pow 10,n 12 將長度為len的陣列,從1按順序列印出來 array.from使用箭頭語法和對映...