求算法,急!

jellen 2003-12-05 07:57:30
写一函数
输入两个整数a,b(b>a)
功能 在 1,2,3,.....a 中 找出累加和为b 的所有序列(每一序列中数不能重复使用)
例子 f(5,8)
输出: 1 2 5
1 3 4
3 5

...全文
48 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
saint001 2003-12-07
  • 打赏
  • 举报
回复
拆分问题允许重复
题目不允许重复
wenxinfly 2003-12-07
  • 打赏
  • 举报
回复
我觉得是正整数分解问题,
将b的正整数分解求出来后
如果每个都小于a即是解
gushaoping 2003-12-07
  • 打赏
  • 举报
回复

典型背包问题
psikyo 2003-12-07
  • 打赏
  • 举报
回复
我来补代码吧

很好理解就不注释了

#include <iostream.h>

int *v;
int a,b;

void f(int k,int n)
{
if(n==0) {
for(int i=1;i<=a;i++)
if(v[i]) cout<<i;
cout<<endl;}
for(int i=k;i<=(a<n?a:n);i++)
{
v[i]=1;
f(i+1,n-i);
v[i]=0;
}
}

void main()
{
cin>>a>>b;

v=new int[a+1];

for(int i=1;i<=a;i++) v[i]=0;

f(1,b);
}


bearkola 2003-12-07
  • 打赏
  • 举报
回复
背包问题

用递归做,代码小于10行。
(具体代码,请楼下的补上)
thinice 2003-12-07
  • 打赏
  • 举报
回复
其实最好是用回溯
wenxinfly 2003-12-07
  • 打赏
  • 举报
回复
做出来看看
016liuzhi@sohu.com
IO_X 2003-12-07
  • 打赏
  • 举报
回复
一个递归就找到了...
ZhangYv 2003-12-05
  • 打赏
  • 举报
回复
GOOGLE 背包问题

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧