從n個字符中,找出m個排列組合
阿新 • • 發佈:2017-10-28
scan maxlength else include sizeof 排列組合 length char col
網上看到的版本
#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() { char source[MAXLENGTH]; int n = 0; char*result = NULL; scanf("%s %d",source,&n); //int len = strlen(source); /*2.初始化*/ result = (char *)malloc(sizeof(char)*n+1); memset(result,‘\0‘,n + 1); /*3.排列組合*/ combine(source,result,n); //free(result); return 0; }
從n個字符中,找出m個排列組合