題目和思路來自劍指offer 題目
思路(1):直接輸出
缺點:無法處理大資料
思路(2):字串模擬輸出
思路:字串模擬加減,此時字串的低位對應著資料的低位。
**:
#include #include using namespace std;
void printnum(char strarr,int nmaxlen,int& nprintbit)
else
}//輸出
nprintbit = max(ncur,nprintbit);
for (int i = nprintbit;i >= 0;i--)
//初始化陣列
char* strarr = new char[nmaxlen];
for (int i = 0;i < nmaxlen;i++)
//處理資料
int nprintbit = 0;
for (int i = 1;i < ncount;i++) }
int main()
思路(3):數字排列模擬輸出
思路:使用數字為數字賦值,此時,字串的低位對應著陣列的高位。
**:
#include using namespace std;
/*注意: 在陣列strarr中,低位址儲存的是待輸出資料的高位*/
void print(char strarr,int nlen)
if (ncur < nlen)
{ for (int i = ncur;i < nlen;i++)
{ cout<
12 列印 1 到最大的 n 位數
題目 輸入數字 n,按順序列印出從 1 到 最大的 n 位十進位制數。比如輸入 3 則列印出 1 2 3 一直到最大的3位數即 999。解析 容易知道不能用 int 等數字型別表示 大數問題 關鍵點 1.如何用字串表示n位數?2.如何實現字串數的自增操作?3.如何列印乙個字串數?申請長度是n 1的字...
12 列印1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,列印出1,2,3一直到最大的3位數即999.n的取值範圍可以很大,考慮大數問題。最常見的方法是用字串或者數字表達大數。把問題轉換成數字排列問題。思考 如何用字串儲存數字 如何在字串表達的數字上模擬加法 把字串表達是數字列印出來 incl...
17 列印從1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 說明 題目要求列印 從1至最大的n位數的列表 因此需考慮以下兩個問題 最大的n位數 記為end 和位數n的關係 例如最大的1位...