-
搜索:
#include#include 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#include 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;}