递归思想实现选排

来源:互联网 发布:淘宝详情页一整张上传 编辑:程序博客网 时间:2024/04/30 02:33
#include <stdio.h>int Swap(char *a,char *b){    char c;    c = *a;    *a = *b;    *b = c;}/* * 递归思想实现选排,不可重复 */void Perm(char *list, int k, int m, int s){    //从list数组中k以后的子串中选排m个元素.s是总的选排个数    int i;    if(k == s || m == 0) {//已经选排完成,输出这个排列方式        for(i=0;i<s;i++)putchar(list[i]);        putchar('\n');    }    else    {        for (i=k; list[i]!='\0'; i++) {            Swap (&list[k], &list[i]);            Perm (list, k+1, m-1,s);//排列右子串            Swap (&list [k], &list [i]);        }    }}int main(int argc ,char *argv[]){    char string[10] = "123";    Perm(string,0,2,2);    return 0;}