您的位置:首页 > 其它

背包问题:求小于M并且加起来和等于N的数

2010-04-05 11:16 316 查看
int N, M;
void output(int a[])
{
for (int i = M; i >=1; i--) {
if (1 == a[i])
cout << i << " ";
}
cout << endl;
}

void backpack(int a[], int n, int m)
{
if (n < 1 || m < 1  || (m == 1 && n != 1)) {
return;
}

if (m == n) {
a[m] = 1;
output(a);
a[m] = 0;
}

backpack(a, n, m-1);

a[m] = 1;
backpack(a, n - m, m - 1);
a[m] = 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐