/* 有四个互不相同的数字,输出由其中三个不重复数字的全排列 思路:n位数,n%10可以得到最后一位,n/10可得前n-1个数;递归实现全排列 递归: 退出条件:low>=high;打印 循环:交换,递归调用函数,交换 */ #include <stdio.h> #include<string.h> void FullPermutation(int a[],int low,int high){ int i,temp; if(low>=high){ for(i=0;i<high;i++){ printf("%d",a[i]); } printf("\n"); }else{ for(i=low;i<high;i++){ if(i!=low){ temp=a[i]; a[i]=a[low]; a[low]=temp; } FullPermutation(a,low+1,high); if(i!=low){ temp=a[i]; a[i]=a[low]; a[low]=temp; } } } } void main(int argc,char *argv[]) { int num,i; int a[4]; scanf("%d",&num); a[3]=num%10; num=num/10; a[2]=num%10; num=num/10; a[1]=num%10; a[0]=num/10; FullPermutation(a, 0, 3); }
原文:https://www.cnblogs.com/zhaohuan1996/p/11805175.html