面試題17 列印1到最大的n位數

2021-09-10 07:19:59 字數 1119 閱讀 8319

// 面試題17:列印1到最大的n位數

// 題目:輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則

// 列印出1、2、3一直到最大的3位數即999。

首先是乙個大陷阱,n有多大?萬一大到long long型別都盛不下,你要直接動手寫,那寫的再正確也是涼涼。

我們考慮到用字元來表示數字,然後把字元列印出來就行了。

書上巴拉巴拉說了一種很複雜的方法,**量大也比較繁瑣,感興趣的去參考資料看就行了。

這裡直接介紹第二種簡單的方法,其實列印出從1最大的n位十進位制數,實際就是每一位上都是0-9,

n位數字做全排列就好了,第0位選好遞迴去選下一位,直到選到第n-1位,退出遞迴。

還有乙個問題就是列印字串的時候,需要把全排列之後的前邊的0給去掉,或者說不列印出來。

解決辦法也不難,就是設定乙個bool變數初值為false,當未找到第乙個不為0的數字且當前數字不為0時置為true,

然後根據bool變數再列印後邊的數字就好了。

//列印出從1到n位的最大數字

void print1tomaxofndigits_2(int n)

//釋放記憶體並返回

delete number;

return;

}//將長度為length的字元陣列number

//的從左往右數第index+1位設定為0-9

void print1tomaxofndigitsrecursively(char* number, int length, int index)

//第index+1位置為i,並向後推進

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

return;

}// 字串number表示乙個數字,數字有若干個0開頭

// 列印出這個數字,並忽略開頭的0

void printnumber(char* number)

printf("\t");

return;

}

劍指offer第二版面試題17

posted @

2018-08-09 20:20

朕蹲廁唱忐忑 閱讀(

...)

編輯收藏

面試題17 列印1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。輸入輸出描述 test 1 test 2 test 3 test 0 test 1 參考 在字串上,模擬數字加法。include include include include incl...

面試題17 列印從1到最大到n位數

次題其實考察的是大數問題,但是我目前是用python3進行程式設計,在python中沒有數字的限制,所以會出現直接迴圈的效率比用大數的方法要快,但是這裡還是建議大家先思考大數方法 其實就是輸入n就定義乙個n長度的陣列,每乙個位置代表真實數字對應的位置,然後分辨從0 9迴圈通過字串進行轉換,防止超出傳...

面試題17 列印從1到最大的n位數

輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。2.1 跳進面試官陷阱 分析 這道題目看起來很簡單。我們看到這個問題之後,最容易想到的辦法就是先求出最大的n位數,然後用乙個迴圈從1開始逐個列印。於是寫出以下 void printtomaxo...