1. 程式人生 > >從n個字符中,找出m個排列組合

從n個字符中,找出m個排列組合

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個排列組合