资源简介
哈工程本科算法实验-0-1背包(动态规划-分支限界-回溯法)【数据+代码+说明+流程图+测试用例】

代码片段和文件信息
#include
#include
#include
#define N 100
using namespace std;
class HeapNode
{
public:
float uprofitprofitweight;
int levelx[N];
};
stack H;
float w[N]p[N];
float cwcp;
int ncbestx[100];
float Bound(int i)
{
float cleft=c-cwb=cp;
while(i<=n&&w[i]<=cleft)
{
cleft-=w[i];
b+=p[i];
i++;
bestx[i]=1;
}
if(i<=n) b+=p[i]/w[i]*cleft;
return b;
}
void AddLiveNode(float upfloat cpfloat cwbool chint level)
{
HeapNode nod;
nod.uprofit=up;
nod.profit=cp;
nod.weight=cw;
nod.level=level;
if(level<=n) H.push(nod);
}
int Knap()
{
int i=1;
cw=cp=0;
float bestp=0up=Bound(1);
while(1)
{
float wt=cw+w[i];
if(wt<=c)
{
if(cp+p[i]>bestp) bestp=cp+p[i];
AddLiveNode(upcp+p[i]cw+w[i]truei+1);
}
up=Bound(i+1);
if(up>=bestp)
AddLiveNode(upcpcwfalsei+1);
if(H.empty()) return bestp;
HeapNode node=H.top();
H.pop();
cw=node.weight;
cp=node.profit;
up=node.uprofit;
i=node.level;
}
}
int main()
{
printf(“输入背包容量:\n“);
scanf(“%d“&c);
while(c<0)
{
printf(“请输入合法数据:\n“);
scanf(“%d“&c);
}
printf(“输入物品数量:\n“);
scanf(“%d“&n);
while(n<0)
{
printf(“请输入合法数据:\n“);
scanf(“%d“&n);
}
FILE *fp;
fp=fopen(“data1.txt““r“);
for(int i=1;i<=n;i++)
{
fscanf(fp“%f“&w[i]);
fscanf(fp“%f“&p[i]);
}
cout<<“物品质量分别为:“;
for(int i=1;i<=n;i++)
{
cout< }
cout< cout<<“物品价值分别为:“;
for(int i=1;i<=n;i++)
{
cout< }
cout< for(int i=1;i<=n;i++)
bestx[i]=0;
fclose(fp);printf(“0-1背包问题最优值:\n“);
printf(“%d\n“Knap());
printf(“0-1背包问题最优解\n“);
for(int i=1;i<=n;i++)
printf(“%d “bestx[i]);
printf(“\n“);
fp=fopen(“data2.txt““w“);
fprintf(fp“0-1背包问题最优值:%d\n “Knap());
fprintf(fp“0-1背包问题最优解:“);
for(int i=1;i<=n;i++)
fprintf(fp“%d “bestx[i]);
fclose(fp);
return 0;}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-26 19:26 0-1背包-分支限界\
文件 2396 2016-12-05 21:15 0-1背包-分支限界\0-1.cpp
文件 985740 2016-12-05 21:15 0-1背包-分支限界\0-1.exe
文件 44071 2016-12-05 21:15 0-1背包-分支限界\0-1.o
文件 23 2016-12-05 20:28 0-1背包-分支限界\data1.txt
文件 52 2016-12-05 21:13 0-1背包-分支限界\data2.txt
文件 10288 2016-12-05 21:24 0-1背包-分支限界\测试用例_.xlsx
文件 63298 2016-12-05 21:24 0-1背包-分支限界\说明+流程图.docx
目录 0 2018-11-26 19:26 0-1背包-动态规划\
文件 1663 2016-12-05 18:02 0-1背包-动态规划\0-1背包.cpp
文件 959845 2016-12-05 18:08 0-1背包-动态规划\0-1背包.exe
文件 5227 2016-12-05 18:08 0-1背包-动态规划\0-1背包.o
文件 15 2016-12-05 18:08 0-1背包-动态规划\data1.txt
文件 48 2016-12-05 18:10 0-1背包-动态规划\data2.txt
文件 10224 2016-12-05 18:12 0-1背包-动态规划\测试用例.xlsx
文件 65140 2016-12-05 18:29 0-1背包-动态规划\说明+流程图.docx
目录 0 2018-11-26 19:26 0-1背包-回溯法\
文件 23 2016-12-05 20:28 0-1背包-回溯法\data1.txt
文件 53 2016-12-05 21:02 0-1背包-回溯法\data2.txt
文件 1583 2016-12-05 21:14 0-1背包-回溯法\回溯.cpp
文件 959345 2016-12-05 21:02 0-1背包-回溯法\回溯.exe
文件 3629 2016-12-05 21:02 0-1背包-回溯法\回溯.o
文件 10285 2016-12-05 20:32 0-1背包-回溯法\测试用例_.xlsx
文件 69362 2016-12-05 20:50 0-1背包-回溯法\说明+流程图.docx
- 上一篇:计算机网络课程设计实验报告
- 下一篇:本科算法实验-最长公共子序列
相关资源
- 电梯模拟程序C/C 算法实现
- linux系统的二级文件系统(QT实现了简
- VS开发进阶源码---烟花特效的生日祝福
- 路由分组转发仿真系统的设计与实现
- Bonjour SDK for Windows
- 《深入理解计算机系统》随书代码
- 炫彩界面库帮助文档chm-v2.5.0
- 嵌入式华清远见培训 ARM代码内部资料
- 2/3FEC编码
- 精简版黑白棋demo-Qt
- 线性表的基本操作vs2017
- 基于Qt5的俄罗斯方块游戏
- WS2812库 arduino测试通过
- VC全景图拼接算法源码毕业设计+论文
- 超市信息管理系统课程设计.docx
- zlib动态链接库x86&64;
- vc做的小游戏 —— 彩色泡泡
- linux+QT下基于RTP协议的实时视频传输客
- cmake-3.17.2-win64-x64.zip
- C用Easyx图形库编写贪吃蛇.zip
- 图像细化算法
- 北斗模块GPS定位显示
- 西电-面向对象课件褚华老师所著
- gsl-2.6.7z
- 《编译原理第二版》完整版
- vim配置成强大的IDE
- K66_逐飞.zip
- mingw-w64压缩包
- ImageFusion.zip
- STM32Cube_fw_F4_V1.24.1 CubeMX的F4系列的封装
评论
共有 条评论