面接問題17:1から最大n桁まで印刷
1から最大n桁まで印刷タイトル説明 高効率解法 タイトルの説明
数字nを入力し、1から最大n桁までの10進数を印刷します.
こうりつかいほう
n個の0-9からの全配列
主関数により第1ビット(最上位)0-9出力を制御し、内部再帰、最後のビットを固定するたびに出力、その他は右から左へ再帰配列する
数字nを入力し、1から最大n桁までの10進数を印刷します.
// +1
// n->0
bool Increment(char *number)
{
bool isOverflow = false;
int nTakeOver = 0;
int nLength = strlen(number);
for(int i=nLength-1; i>=0; i--)
{
int nSum = number[i] - '0' + nTakeOver;
if(i == nLength - 1)
{
nSum ++;// +1
}
if(nSum >= 10)
{
if(i == 0) isOverflow = true;
else
{
nSum = nSum - 10;
nTakeOver = 1;
number[i] = nSum + '0';
}
}
else
{
number[i] = nSum + '0';
break;
}
}
return isOverflow;
}
void PrintNumber(char *number)
{
int nLength = strlen(number);
int start = false;
for(int i=0; i
こうりつかいほう
n個の0-9からの全配列
主関数により第1ビット(最上位)0-9出力を制御し、内部再帰、最後のビットを固定するたびに出力、その他は右から左へ再帰配列する