递归的全排列产生算法

来源:互联网 发布:php server 编辑:程序博客网 时间:2024/06/10 05:04
#include<stdio.h>void perm(char *list,int i,int n);void swap(char *a,char *b);int main(){    char a[5]={'a','b','c','\0'};    perm(a,0,2);}void perm(char *list,int i,int n){    int j;    if(i==n)//满足长度就输出    {        for(j=0;j<=n;j++)            printf("%c",list[j]);        printf("\n");    }    else     {        for(j=i;j<=n;j++)        {            swap(&list[i],&list[j]);//每次进行交换,然后不断递归就可以得到新结果            perm(list,i+1,n);            swap(&list[i],&list[j]);//将交换重新调整回来,下次当j增加的时候在交换就不会重复        }    }}void swap(char *a,char *b){    char c;    c=*a;    *a=*b;    *b=c;}

原创粉丝点击