剣指Offerのプリント1~最大N桁
1630 ワード
タイトルの説明:
1桁の数字Nが与えられ、1から最大のN桁まで印刷される.
入力:
各入力ファイルには、テストサンプルのセットのみが含まれます.各テストケースについて、数値N(1<=N<=5)を入力します.
出力:
各テストケースに対応して、1から最大のNビット数まで順次印刷します.
サンプル入力:
サンプル出力:
【解析】
問題は完全にN個の数の全配列と見なすことができる
1桁の数字Nが与えられ、1から最大のN桁まで印刷される.
入力:
各入力ファイルには、テストサンプルのセットのみが含まれます.各テストケースについて、数値N(1<=N<=5)を入力します.
出力:
各テストケースに対応して、1から最大のNビット数まで順次印刷します.
サンプル入力:
1
サンプル出力:
1
2
3
4
5
6
7
8
9
/*********************************
* :2013-11-11
* :SJF0115
* : 1515: 1 N
* :http://ac.jobdu.com/problem.php?pid=1515
* :AC
* : Offer
* :
**********************************/
#include
#include
#include
#include
using namespace std;
/*
* n n
* index
*/
void FullPermutation(char *number,int n,int index){
int i;
//
if(index == n){
int flag = 1;
for(i = 0;i < n;i++){
// 0
if(flag && number[i] == '0'){
continue;
}
else{
flag = 0;
printf("%c",number[i]);
}
}
if(flag == 0){
printf("
");
}
return;
}
else{
for(i = 0;i < 10;i++){
number[index] = i + '0';
FullPermutation(number,n,index + 1);
}
}
}
void OutPutNumber(int n){
if(n < 0){
return;
}
else{
char *number = new char[n + 1];
number[n] = '\0';
//
FullPermutation(number,n,0);
}
}
int main()
{
int i,n;
while(scanf("%d",&n) != EOF){
OutPutNumber(n);
}
return 0;
}
【解析】
問題は完全にN個の数の全配列と見なすことができる