您的位置:首页 > 其它

组合问题(从M个不同字符中任取N个字符的所有组合)

2013-06-20 13:31 225 查看
#include <stdio.h>
void select(char* str, int len, char* result, int start, int curr, int dest)
{
if (curr == dest) puts(result);
else
{
int i;
for (i = start;  len - i >= dest-curr ; ++i)
{//len - i >= dest-curr就是说主串还剩下的可以选取的字符应该大于等于你还需要的字符数
result[curr] = str[i];
//递归的刷新把问题递归的变小。比如1 2 3 4 要知道1的组合,我只要知道2 3 4 的组合,要知道2 3 4 的我只要知道3 4 的
select(str, len, result, i+1, curr+1, dest);
}
}
}

int main()
{
char *source = "ABCDE";
char result[8] = {0};
select(source, 5, result, 0, 0, 3);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: