您的位置:首页 > 其它

递归实现组合问题

2013-08-28 20:54 218 查看
功能:递归实现组合问题

时间:2013-08-28

#include <iostream>
using namespace std;

void zuhe2(int P[], int i, int num);
#define NUM 3
int A[] = {1, 2, 3, 4, 5, 6};
int B[NUM];
int n = sizeof(A)/sizeof(int);

int main(void)
{
cout << "总共:" << n << ", 选取:" << NUM << endl;

zuhe2(B, 0, NUM);
return 0;
}
/* P:临时保存组合数;i:读取到第几个数;num:还需要数*/
void zuhe2(int P[], int i, int num)
{

if (num==0)
{
for (int ii = 0; ii < NUM; ii++) cout << P[ii] << " ";
cout << endl;
}
else
{
for (int ii = i; ii < i + (n-i)-(num)+1; ii++) //在i的基础上 + 剩余的数 - 还需要的数 + 1
{
P[NUM-num] = A[ii];
zuhe2(P, ii+1, num-1);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归