列印從1到最大的n位數

2021-10-13 21:02:15 字數 1161 閱讀 6486

題目描述:

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

示例 1:

輸入: n = 1

輸出: [1,2,3,4,5,6,7,8,9]

可採用快速冪 + 逐個遍歷的方式。

**:

class

solution

;int maxval =

_getpow

(n);

//運用快速冪求解,10的n次方

vector<

int> v;

for(

int i =

1; i < maxval;

++i)

//逐個遍歷

v.push_back

(i);

return v;

}private

:int

_getpow

(int n)

return ret;}}

;

有大數時,可考慮採用全排列的方式。

即:

此時借用string模擬數字的插入,題目要求返回int,則最後再將該string轉化為int數字即可。

採用dfs,分別對每層進行搜尋,當滿足條件時,則可以插入了。

第乙個值為0,所以需要對該值進行刪除。

**:

class

solution

;dfs(0

, n)

;//開始搜尋

v.erase

(v.begin()

);//刪除第乙個值,刪除 0

return v;

}private

:void

dfs(

int index,

int n)

for(

int i =

0; i <10;

++i)

//每一層的迴圈開始條件}}

;

列印從1到最大的n位數

題目 輸入數字n,順序列印從1到最大n位的十進位制數,例如輸入3,列印1到999 includebool increment char number void printnumber char number void printtomaxofndigitsrecursively char numbe...

列印從1到最大的n位數

void print1tomaxofndigits int n 上面的 有個最嚴重的問題 沒有關注n的範圍 當輸入的n很大時,我們求最大的n位數用int或者long long都會溢位。也就是我們需要考慮大數問題。因為數字最大是n位,所以我們需要用乙個長度是n 1的字串 字串最後一位放 0 當實際的數...

列印從1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。思路 首先注意這是個大數問題,n很大的時候c 的int和long long都吃不消,所以數字的儲存要用字串 這裡我模擬了大數相加,只不過每次都是加1 另外要注意列印的問題,cout比較慢...