递归实现组合问题
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);
}
}
}
时间: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);
}
}
}
相关文章推荐
- 组合问题---递归实现
- 递归三兄弟——数的乘方、背包问题、组合的Java实现
- Java 非递归实现的排列组合中的平均分组问题
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- 递归实现排列组合问题
- 组合问题的递归实现
- 递归实现排列组合问题
- powerset 幂集函数(组合问题)的递归实现
- 字符串的组合问题 递归和非递归实现
- 关于数学组合问题在m个球中取n个球-递归实现
- 全组合的递归实现(ruby)
- 复杂迷宫问题的递归实现以及最短路径
- 递归电话号码字符组合问题
- 打靶问题c++代码递归实现——程序员面试宝典
- 关于用arguments.callee实现递归的问题
- 老鼠过迷宫问题——递归实现
- java 排列组合(递归实现)
- LC2K汇编语言递归实现组合数
- 组合问题(递归)
- 兔子生娃问题---函数递归应用--c语言实现