輸出1到最大n位數之間的所有數

2021-09-22 12:08:02 字數 1609 閱讀 1055

比如

n = 2

那麼從1一直輸出到99

分析

直接輸出,遇到大數時肯定有問題,比如n=100,儲存100位的資料型別不存在。

可以利用陣列來儲存大數,比如n=100,可以開闢個陣列 char a[101]

思路一

模擬現實中的技術方式,逢九進一

參考**

#include #include 

using

namespace

std;

bool minuxone(char *a, int *end_index, int

size)

else

}if(a[*end_index] == '0'

) ++*end_index;

}return

true;}

bool printnum(const

intsize)

cout

<< "\t"

;

if(!minuxone(a, &end_index, size))

break

; }

delete a;

return

true;}

intmain()

結果

思路二

本質可以看作是全排列,只是前邊的0別輸出

#include using

namespace

std;

bool print1tomaxn(const

intn);

bool print1tomaxnrecursion(char *a, int size, int

index);

bool printnum(char *a, int

size);

intmain()

bool print1tomaxn(const

intsize)

return

true;}

bool print1tomaxnrecursion(char *a, int size, int

index)

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

}

bool printnum(char *a, int

size)

cout

<< "\t"

;}

結果

分析

1. 輸出問題:一開始為0不要輸出,這需要輸出時判斷下

2. 遞迴全排列的本質原理:每一位字元0~0都有可能,在方位本位的時候遞迴遍歷下一位。

輸出1到最大n位數之間的所有數

比如 n 2 那麼從1一直輸出到99 分析 直接輸出,遇到大數時肯定有問題,比如n 100,儲存100位的資料型別不存在。可以利用陣列來儲存大數,比如n 100,可以開闢個陣列 char a 101 思路一 模擬現實中的技術方式,逢九進一 參考 include include using names...

輸出1到最大n位數之間的所有數

比如 n 2 那麼從1一直輸出到99 分析 直接輸出,遇到大數時肯定有問題,比如n 100,儲存100位的資料型別不存在。可以利用陣列來儲存大數,比如n 100,可以開闢個陣列 char a 101 思路一 模擬現實中的技術方式,逢九進一 參考 include include using names...

輸出1到最大的N位數

from 演算法一 最直觀的演算法,求出最大的n位數是多少,然後乙個迴圈列印。cpp view plain copy void print1tomaxofndigits1 intn 演算法二 字串表示大數 當n很大時,演算法一可能會溢位,所以考慮大數問題一般用陣列或字串。用字串表達數字的時候,最直觀...