2775 - 数字的组成
有1~n这n(n<=7)个数,现将这n个数组成一个n位的数,对于这n个数,每个数取的个数是不受限制的,即某个数取了后还可以再取,例如n=3,则111,123,222,233等都是符合条件的数。问,输入n后,将符合条件的所有的n位数输出,且按照从小到大顺序输出。
Input
输入一行:一个正整数n。
Output
输出多行:由小于n的数组成的多个n位数
Examples
Input
2
Output
11 12 21 22
Solution 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; }
Solution 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; }