// 面試題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...