-
搜索:
#include<cstdio> #include<iostream> using namespace std; int n,a[10],b[10]; void dfs(int step) { if(step==n+1) { for(int i=1;i<=n;i++) { printf("%d",a[i]); } printf("\n"); return ; } for(int i=1;i<=n;i++) { if(b[i]==0)//如果这个数还没有排,就放到当前位置,并继续放下一个位置的数 { a[step]=i; b[i]=1; dfs(step+1); b[i]=0; } } return ; } int main() { while(~scanf("%d",&n))//输入需要排列的个数(n<10); { dfs(1); } return 0; }
-
全排列函数:
#include<stdio.h> #include<algorithm> using namespace std; int main() { int num[10]; int i; for(i=1;i<=8;i++) { num[i]=i; } do{ for(i=1;i<=8;i++) { if(i==8)printf("%d\n",num[i]); else printf("%d ",num[i]); } }while(next_permutation(num+1,num+1+8));//全排列函数 return 0; }