一01背包问题。
*这里是综述。
int c;//背包容量。
int n; /物品数。
int *w;//物品重量数组。
int *p;//物品价值数组。
int cw;//当前重量。
int cp;//当前价值。
int bestp;//当前最优值。
int *bestx;//当前最优解。
int *x;//当前解。
int knap::bound(int i)//计算上界。
void knap::backtrack(int i)//回溯函数。
int knapsack(int p,int w,int c,int n) /为knap::backtrack初始化。
class knap//
friend int knapsack(int p,int w,int c,int n );定义一个友联函数背包函数。
public:
private:
int bound(int i);
void backtrack(int i);
int c;//背包容量。
int n; /物品数。
int *w;//物品重量数组。
int *p;//物品价值数组。
int cw;//当前重量。
int cp;//当前价值。
int bestp;//当前最优值。
int *bestx;//当前最优解。
int *x;//当前解。
int knap::bound(int i)//计算上界。
int cleft=c-cw;//剩余容量。
int b=cp;
while(i<=n&&w[i]<=cleft)//以物品单位重量价值递减序装入物品。
cleft-=w[i]; b+=p[i]; i++;装满背包。
if(i<=n)
b+=p[i]/w[i]*cleft;
return b;}
void knap::backtrack(int i)//定义一个回溯函数。
if(i>n)
if(cw+w[i]<=c) /搜索左子树。
x[i]=1; cw+=w[i]; cp+=p[i]; backtrack(i+1); cw-=w[i]; cp-=p[i];}
if(bound(i+1)>bestp)//搜索右子树。
class object//定义物品的类,封装数据。
friend int knapsack(int p,int w,int c,int n);
public:
int operator<=(object a)const
private:
int id;
float d;
int knapsack(int p,int w,int c,int n)//为knap::backtrack初始化,解决背包函数,/主要是这个,int w=0; int p=0; int i=1;
object *q=new object[n];
for(i=1;i<=n;i++)
if(w<=c)
return p;//装入所有物品。
float f;//依物品单位重量排序。
for(i=0;i for(int j=i;j
knap k;
= new int[n+ =new int[n+1];
= new int[n+ =new int[n+1];
for( i=1;i<=n;i++)
//回溯搜索。
delete q;
delete
delete
return
二:批处理作业调度问题。
#define max 999999
/排列树问题,规模o(n!),通过剪枝实现回溯算法,减小解空间树规模
class flowshop
private:
int firsttime;//机器最后完成时间
int secondtime;//机器最后完成时间
int totaltime;//记录递归过程中的机器时间和
int besttime;//最佳调度下的机器时间和
int *first;//记录每个任务在机器完成需要的时间
int *second;//记录每个任务在机器完成需要的时间
int *x;//记录递归过程中的解
int *bestx;//记录最佳调度下的解
int num;//任务的数量
public:
//构造函数
flowshop(int num)
void bestflowshop() 调用回溯算法。
void flowshop(int i) /回溯核心算法。
void input() 输入数据。
void display() 打印结果。
算法作业背包问题
动态规划 作业报告。一 作业目的 1 掌握动态规划算法解决问题的过程。2 熟练编程,能根据所编程序,规范写出该算法的伪 并对算法进行复杂性分析。二 作业要求 1 独立完成作业 2 完成作业报告,并用a4纸打印后上交,打印时要双面打印。作业报告 一 问题描述及定义。有n件物品和一个容量为c的背包。第i...
背包旅游作业
一 名词解释。1背包旅游是一种时尚的自助旅游形式,指旅游者具有明确意识,独自或者少数人一起,自主弹性安排旅游行程,以徒步行为主要体验形式的一种相当自由的自助旅游形式。背包旅游者偏爱廉价的食宿设施,重视与他人交流,游期长以及喜欢非正式的 参与性的活动,更关注自然 文化和探险。2野外生存 是指在人迹较少...
未来的背包作文
未来的背包是一个包型机器人。他有背包的身体,两条机械臂就是背带,可伸缩的两条腿,还有两个小眼睛。背包的颜色能随着你的心情变换。他的眼睛能投影,你随时随地都能看他放的电影。别看他个头小,他能将房子 家具 食物统统变成一个个小球,在装进自己的肚子里。你也许会想食物会变质吗?不不不,你根本不用担心。因为小...