剣指Offerのプリント1~最大N桁

1630 ワード

タイトルの説明:
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個の数の全配列と見なすことができる