算法设计与分析所有实验及代码

时间:2015-05-28 03:19:42
【文件属性】:

文件名称:算法设计与分析所有实验及代码

文件大小:216KB

文件格式:DOC

更新时间:2015-05-28 03:19:42

算法设计

算法各种实验的代码及过程,帮助理解 二:回溯法 标题: 0-1背包问题 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。 输入: 多个测例,每个测例的输入占三行。第一行两个整数:n(n<=10)和c,第二行n个整数分别是w1到wn,第三行n个整数分别是p1到pn。 n 和 c 都等于零标志输入结束。 输出: 每个测例的输出占一行,输出一个整数,即最佳装载的总价值。 输入样例: 1 2 1 1 2 3 2 2 3 4 0 0 输出样例: 1 4 #include #define MAX 10 using namespace std; typedef struct{ float w;//物品的重量 float p;//物品的价值 float d;//物品的单位价值 int id;//物品的编号 }Part; typedef struct{ Part r[MAX+1]; int length; }Parts; int n;//包个数 float c;//背包的容量 float cw;//当前重量 float bestp=0;//当前最优价值 float cp;//当前价值 Parts L;//背包集 int Partition(Parts &L,int low,int high) { int pivotkey; L.r[0]=L.r[low]; pivotkey=L.r[low].d; while(low=pivotkey) --high; L.r[low]=L.r[high];


网友评论

  • 比较适合学生用吧,写的比较初级