递归思想实现选排
来源:互联网 发布:淘宝详情页一整张上传 编辑:程序博客网 时间: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;}