对于全排列问题,用到的是递归分治策略,对于12345的全排列来说,采用递归分治,划分为更小规模的子问题,要求12345的全排列,就要求2345的全排列,要求2345的全排列,就要求345的全排列,以此类推。
#include<bits/stdc++.h> using namespace std; int f[10][10]; void perm(int a[],int k,int m) { if(k == m) { for(int i=1; i<=m; i++) printf("%d",a[i]); printf("\n"); } else { for(int i=k; i<=m; i++) { swap(a[i],a[k]); perm(a,k+1,m); swap(a[i],a[k]); } } } int main() { int n; scanf("%d",&n); int a[n+1]; int f[(int)pow(10,n)]; memset(a,0,sizeof(a)); memset(f,0,sizeof(f)); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } perm(a,1,n); }