比如
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很大時,演算法一可能會溢位,所以考慮大數問題一般用陣列或字串。用字串表達數字的時候,最直觀...