题目如下:
#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;
}