【background】 输入n,(1<=n<=20)要求输出 n^n 个 每个长度为n的所有通过乘法原理所列举出的排列。 比如n为2时 1---1 | X | 2---2 即要求按行输出 11 12 21 22 【sample input】 3 【sample output】 111 112 113 121 122 123 131 132 133 211 212 213 221 222 223 231 232 233 311 312 313 321 322 323 331 332 333 |
#include <iostream> using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) {a[i]=1;} int count=1; for(int i=0;i<n;i++) {count=count*n;} for(int j=0;j<count;j++) { for(int j=n-1;j>=0;j--) { if(a[j]==(n+1)&&(j-1)>=0) { a[j-1]++; for(int k=j;k<n;k++) {a[k]=1;} } } for(int p=0;p<n;p++) {cout<<a[p];} cout<<endl; a[n-1]++; } }
#include <iostream> #include <math.h> using namespace std; void poppy(int n,int shu) { int temp; for(int i=1;i<=n;i++) { temp=shu*10+i; if (temp/pow(10,n-2)<10) poppy(n,temp); else cout<<temp<<'\t'; } }
void main() { int n; cin>>n; for (int i=1;i<=n;i++) poppy(n,i); cout<<endl; } 刚刚起来做的 可以输入任何数 请指教