首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么用递归实现从N个不同的字母中选出M个的所有组合,并打印

2012-04-27 
如何用递归实现从N个不同的字母中选出M个的所有组合,并打印?菜鸟算法问题,求解决:要求,给定任意数组,例如

如何用递归实现从N个不同的字母中选出M个的所有组合,并打印?
菜鸟算法问题,求解决:

要求,给定任意数组,例如 char arr[4]={'a', 'b', 'c', 'd'}; 打印出任意m个元素的组合,
例如m=3, 则要按照以下顺序输出:abc abd acd bcd
要求用c语言递归实现。各位高手帮忙想想,先谢过。

[解决办法]

C/C++ code
#include<stdio.h>#include<stdlib.h>void func(char *f, char *l, char res[], const int M, int cnt = 0){    int i;        if (f == l || M <= cnt)    {        if (M == cnt)        {            for (i = 0; i < M; ++i)            {                printf("%c ", res[i]);            }            printf("\n");        }    }    else    {        if (f < l)        {            res[cnt] = *f;            func(f + 1, l, res, M, cnt + 1);            func(f + 1, l, res, M, cnt);        }    }}int main(){    char src[] = {'a', 'b', 'c', 'd'};    char res[sizeof(src) / sizeof(src[0])];        func(src, src + sizeof(src) / sizeof(src[0]), res, 3);        system("pause");    return 0;} 

热点排行