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

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


void combine(char *value,char *result,int m)
{
    if(m == 1)
    {
        while(*value != '\0')
        {
            printf("%s%c\n",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] = '\0';
        value++;
        combine(value,result,m - 1);
    }
}

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

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

    combine(value,result,m);


    return 0;
}

 

posted @ 2017-10-28 18:40  青儿哥哥  阅读(449)  评论(0编辑  收藏  举报