递归 —— 全排列(带输出具体情况)

来源:互联网 发布:mac 自动字幕的播放器 编辑:程序博客网 时间:2024/06/09 17:02


递归方法求全排列


#include<stdio.h>#include<algorithm>using namespace std;//每次两两交换,到最后一个位置时输出 void perm(int a[],int begin,int end){if(begin == end)//{for(int i=1;i<=end;i++)printf("%d ",a[i]);printf("\n");}else{//begin前面的固定下来,求begin后面的序列的全排列,递归到后面的序列只剩一个元素为止for(int i=begin;i<=end;i++){swap(a[i],a[begin]);perm(a,begin+1,end);swap(a[i],a[begin]);}}}int main(){int n,a[6];printf("输入小于6的数:\n");scanf("%d",&n);if(n<6){for(int i=1;i<=n;i++) a[i] = i;perm(a,1,n);}return 0;} 





0 0