社区
数据结构与算法
帖子详情
求0/1背包问题(贪心法)
lezi1022
2003-12-27 04:07:57
k=20
对{1,2,…,n}中元素个数≤k的子集T求价值和 ∑i∈TPi与重量和∑i∈T Wi
在这一步我写不下去了,
谁能帮帮忙,写一个求出所有的子集,并求出每个子集的价值和与重量和!
或者写个完整程序给我!
是用贪心法,按照性价比非递增排列!
...全文
106
2
打赏
收藏
求0/1背包问题(贪心法)
k=20 对{1,2,…,n}中元素个数≤k的子集T求价值和 ∑i∈TPi与重量和∑i∈T Wi 在这一步我写不下去了, 谁能帮帮忙,写一个求出所有的子集,并求出每个子集的价值和与重量和! 或者写个完整程序给我! 是用贪心法,按照性价比非递增排列!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
loewe
2003-12-28
打赏
举报
回复
#include<iostream.h>
#define N 5
int w[N],p[N],save[N],cop[N],Max; //w[i]表示第i个物品的重量,p[i]是其价值
void Search(int i,int weight,int R) //weight 表示剩余可放重量,R表示当前已经转载的重量
{
if(i==N || weight==0)
{
if(R>Max)
{
Max=R; //最大
for(int k=0;k<N;k++)
save[k]=cop[k]; //记录哪些物品被放入背包,1表示放入
}
return ;
}
else
{
if(w[i]<weight)
{
cop[i]=1;
Search(i+1,weight-w[i],R+p[i]);
cop[i]=0;
Search(i+1,weight,R);
}
else
Search(i+1,weight,R);
}
}
void main()
{
int i,weight;
cout<<"Weight = ";
cin>>weight;
for(i=0;i<N;i++)
{
cop[i]=0;
cout<<"The "<<i<<" : "<<endl;
cin>>w[i]>>p[i];
}
Max=0;
Search(0,weight,0);
cout<<endl<<"Max = "<<Max<<endl; //结果
for(i=0;i<N;i++)
if(save[i]!=0)
cout<<i<<"\t";
}
用了以下数据测试:
weight = 40
w: 8 16 21 17 12
p: 8 14 16 11 7
结果是:
Max = 30
1 2
ycxw
2003-12-27
打赏
举报
回复
你知道算法的话,还不好写啊?
1000多种java算法大全源码包
- **
背包问题
**:0/1背包、完全背包、多重背包。 - **最长公共子序列**、**最长上升子序列**。 - **斐波那契数列**:如使用备忘录或迭代法解决。 - **最短路径问题**:如Dijkstra算法的动态规划改进版。 6. **...
C++ 算法大全 PDF
6. **分支限界法**:用于寻找最优解的全局搜索方法,如在旅行商问题、0-1
背包问题
中的应用。 7. **排序与查找算法的复杂度分析**:理解时间复杂度和空间复杂度的概念,学习如何分析算法效率,以便在实际开发中选择...
十三个经典算法研究PDF文档[带目录+标签]
4. **动态规划**:如
背包问题
和最长公共子序列,动态规划通过构建状态转移矩阵来解决具有重叠子问题和最优子结构的复杂问题,是优化问题的常用工具。 5. **贪心算法**:例如Prim最小生成树算法和Kruskal算法,这两...
贪心算法之0/1
背包问题
贪心算法之0/1
背包问题
的java实现
【Python实现0/1
背包问题
】- 贪心算法、动态规划
在计算机算法中,我们通常使用贪心算法和动态规划算法来解决0/1
背包问题
。下面是使用Python实现0/1
背包问题
的代码,同时包含了贪心算法和动态规划算法的实现。上述代码实现了0/1
背包问题
的贪心算法和动态规划算法,...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章