OJ 系列之从M个不同字符中任取N个字符的所有组合

来源:互联网 发布:英伦对决影评知乎 编辑:程序博客网 时间:2024/05/01 04:37

题目如下:
这里写图片描述


#include <string.h>#include <stdio.h>#include <stdlib.h>#define MAXLENGTH 10000//组合问题(从M个不同字符中任取N个字符的所有组合) void combine(char *source,char *result,int n){    if (1==n)    {        while (*source) {            printf("%s%c ",result,*source++);        }    }else {        int i,j;        for (i=0;source[i]!='\0';i++);        for (j=0;result[j]!='\0';j++);        for (;i>=n;i--)        {            result[j]=*source++;            result[j+1]='\0';            combine(source,result,n-1);        }    }}int main(int argc, char* argv[]){    char source[MAXLENGTH];    int n = 0;    char *result = NULL;    scanf("%s %d",&source,&n);    int len = strlen(source);    /*1.输入参数有误*/    if(n>=len||n<=0) {        printf("ERROR\n");        return 0;    }    /*2.初始化*/    result = (char *)malloc(sizeof(char)*n+1);    memset(result,'\0',sizeof(result));    /*3.排列组合*/    combine(source,result,n);    //free(result);    return 0;}
0 0
原创粉丝点击