01背包问题and批处理作业调度问题

发布 2022-09-08 09:39:28 阅读 1276

一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野外生存 是指在人迹较少...

未来的背包作文

未来的背包是一个包型机器人。他有背包的身体,两条机械臂就是背带,可伸缩的两条腿,还有两个小眼睛。背包的颜色能随着你的心情变换。他的眼睛能投影,你随时随地都能看他放的电影。别看他个头小,他能将房子 家具 食物统统变成一个个小球,在装进自己的肚子里。你也许会想食物会变质吗?不不不,你根本不用担心。因为小...