2775 - 数字的组成
时间限制 : 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; }