从n个字符中,找出m个排列组合

#include <string.h>
#include <stdio.h>
#include <stdlib.h>


void combine(char *value,char *result,int m)
{
    if(m == 1)
    {
        while(*value != '')
        {
            printf("%s%c
",result,*value);
            value++;
        }
    }

    int value_len = strlen(value);
    int result_len =  strlen(result);

    int i = 0;
    for(i = 0;i < value_len - m + 1;i++)
    {
        result[result_len] = *value;
        result[result_len + 1] = '';
        value++;
        combine(value,result,m - 1);
    }
}

int main()
{
    printf("输入字符集:
");
    char value[10];
    scanf("%s",value);
    printf("输入组合的数字:
");
    int m;
    scanf("%d",&m);

    char *result = (char *)malloc(m + 1);
    memset(result,0,m + 1);

    combine(value,result,m);


    return 0;
}
原文地址:https://www.cnblogs.com/qingergege/p/7747680.html