资源简介
哈工程本科算法实验-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
- 上一篇:计算机网络课程设计实验报告
- 下一篇:本科算法实验-最长公共子序列
相关资源
- linux 下c实现简单的网络嗅探器
- 计算机图形学四面体几何变换.doc
- SWMM51014代码编译及扩展案例182387
- conio.h头文件
- 利用栈求表达式的值
- LINUX 下的超声波驱动
- 五子棋 Linux make
- 基于单片机的正弦波设计程序幅度和
- VHDL 的程序
- 蓝桥杯历年真题视频解析
- 《数据结构及算法经典》源代码.
- GD32F303 串口+DMA 收发数据
- 基于OpenGL的场景迷宫漫游可以碰撞检
- STDLIB.H头文件
- WM算法C
- opencv检查图片中是否有人
- C经典教材-C和指针课后习题答案
- SWMM51014代码编译及扩展案例
- libevent参考手册(中文版-高清-目录)
- SHA512源码
- QT案例--翻金币小游戏
- 递归下降语法分析器
- mingw-get-setup安装包.zip
- 基于STC89C52单片机温室大棚监控监控系
- opencv提取视频图片并检查人脸
- 利用ffmpeg实现RTSP,RTMP推流以及保存到
- 本科算法实验-线性时间选择
评论
共有 条评论