劍指offer 列印從1到最大的n位數

2022-11-24 15:11:27 字數 1007 閱讀 1328

題目描述:

輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1、2、3一直到最大的3位數999.

分析:注意不能直接輸入最大的n位十進位制數,因為可能屬於大數,這個數無法用int或者long long儲存,因此需要用字串表示。

思路:我們用n位全排列解法,每一位都可以是0~9的數。利用遞迴解法。需要注意的是前導0不要輸出,比如一位的時候只列印1-9, 2位的時候列印1-9(而不是01、···)、10-99.

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6void print1tomaxofndigitsrecursively(char* number, int length, int

index);78

void printnumber(char*number) 18}

19if (!(index == 0 && number[index] == '0'

)) 23 printf("\n"

);24}25

}2627void print1tomaxofndigits(int

n) 31

char *number = new

char[n + 1

];32 number[n] = '\0'

;33for (int i = 0; i < 10; i++)

37delete

number;38}

3940

void print1tomaxofndigitsrecursively(char* number, int length, int

index)

45for (int i = 0; i < 10; i++) 49}

5051

intmain()

56return0;

57 }

劍指Offer 17 列印從1到最大的n位數

劍指offer contents解答1 迴圈列印 不考慮大數問題 解答2 字元全排列 考慮大數問題 解答3 字串表示數字 考慮大數問題 輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1 2 3 一直到最大的 3 位數 999。示例 1 輸入 n 1 輸出 1,...

劍指 Offer 17 列印從1到最大的n位數

輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1 2 3 一直到最大的 3 位數 999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 說明 用返回一個整數列表來代替列印 n 為正整數 找到最大的 n 位數,例如找到最大的 2 位數是 99...

劍指 Offer 17 列印從1到最大的n位數

1 class solution 14 1 bool increment string num 2void printnumber const string num 34 intmain 514 15return0 16 1718 自增1 19 使用了o 1 時間判斷是否已經自增到了最大值 20bo...