2775 - 数字的组成

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

有1~n这n(n<=7)个数,现将这n个数组成一个n位的数,对于这n个数,每个数取的个数是不受限制的,即某个数取了后还可以再取,例如n=3,则111,123,222,233等都是符合条件的数。问,输入n后,将符合条件的所有的n位数输出,且按照从小到大顺序输出。

题目输入

输入一行:一个正整数n。

题目输出

输出多行:由小于n的数组成的多个n位数

输入/输出样例

输入格式

2

输出格式

11
12
21
22

C语言解答

#include<stdio.h>
#include<stdlib.h>
int a[10]={0};
int n;
void outp(int a[]);

int search(int i){
    int j;
    for(j=1;j<=n;j++){
        a[i]=j;
        if(i==n) outp(a);
        else search(i+1);
        }
}

void outp(int a[]){
     int i;
  for(i=1;i<=n;i++){
         printf("%d",a[i]);
  }
     putchar('\n');
}

int main(){

    scanf("%d",&n);
    search(1);

    return 0;
}

C++解答

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath> 
using namespace std;
int a[20],sum=0;
int i,m,n,j,k;
int pl (int s)
{
 int i,j;
 for (i=1;i<=n;++i)
  {
  	a[s]=i;
  	if (s==n)
	 {
	  sum+=1;if (sum>1) cout<<endl;
  	  for (j=1;j<=n;++j)
  	   cout<<a[j]; 
	 }
  	else pl(s+1);
  }
}
int main ()
{
 cin>>n;
 pl(1);
 return 0;
}