2012年8月30日

摘要: 【0/1背包问题】 在0/1背包问题中,需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高,即p1*x1+p2*x1+...+pi*xi(其1<=i<=n,x取0或1,取1表示选取物品i) 取得最大值。【输入文件】第一行一个数c,为背包容量。第二行一个数n,为物品数量第三行n个数,以空格间隔,为n个物品的重量第四行n个数,以空格间隔,为n个物品的价值【输出文件】能取得的最大价值。【分析】 初看这类问题,第一个想到的会是贪心,但是贪心法却无 阅读全文
posted @ 2012-08-30 20:29 Trony 阅读(5637) 评论(1) 推荐(0) 编辑
 
摘要: 题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:1.直接穷举。从数组中任意选取两个数,判定它们的和是否为输入的那个数字。此方法与数组有序或者无序无关,时间复杂度为O(n)。View Code 1 #include <iostream.h> 2 3 bool Find2Num(int *data,int n,int sum,int &num1,int &num2) 4 { 5 if (NU 阅读全文
posted @ 2012-08-30 11:05 Trony 阅读(287) 评论(0) 推荐(0) 编辑