12 2013 档案

摘要:描述:某厂根据计划安排,拟将n 台相同的设备分配给m 个车间,各车间获得这种设备后,可以为国家提供盈利Cij(j 台设备提供给i 号车间将得到的利润,1≤i≤m,1≤j≤n) 。问如何分配,才使国家得到最大的盈利?算法基本思路:1.求最大利润输入:c[i][j] = 将 j+1 台设备分配给 i+1 号车间得到的利润。定义:将 j 台设备分配给前 i 个车间的最大利润 p[i][j](即题目所求的是p[m][n]),因此p[i][j]是以下两种情况的较大值:(1)不分配给 i 号车间,此时的最大值为将j 台设备分配给前 i-1 个车间的最大值,p[i][j] = p[i-1][j];(2)分配 阅读全文
posted @ 2013-12-09 12:28 7hat 阅读(1615) 评论(1) 推荐(1)
摘要:描述:给定一个由n 行数字组成的数字三角形(例如下图)。输出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。(红色路径表示最优路径,结果为9+3+8+7+5 = 32)算法基本思路:显然用一个二维数组rec[0..n-1][0..n-1]可以保存该三角形作为输入(用二维数组对角线以下的位置保存三角形)。对于任意rec[i][j],我们可以定义一个表m[i][j] 来表示以rec[i][j]作为当前路径的终点所得到的最优值。对于m[i][j],要到达这个数字,必须经过前面的某个数字,可以通过计算前面的最优解来构造m[i][j]的最优解。求解m[i][j]的最优解,可以通过子集的最优解构造 阅读全文
posted @ 2013-12-08 18:52 7hat 阅读(990) 评论(1) 推荐(0)
摘要:描述:给定总金额为A 的一张纸币,现要兑换成面额分别为a1, a2,…, an 的硬币。硬币兑换问题是用最少枚数的硬币来兑换总金额为A 的纸币。如 a = {1, 2, 5},兑换6元则要2枚硬币(1和5)。根据特定的a,有可能可以直接用贪心算法每次都选取可用的最大硬币值。但对于一些例子,会出现错误情况。如 a = {1, 4, 5},兑换8元。若直接选取最大值,则需要4枚(1个5和3个1),但显然最优值应为2枚(2个4)。对于兑换n元的硬币的最优情况,可以遍历列表 a ,分别选取1个其面值的硬币,再从中挑出最优结果,此时 f(n) = min{f(n-ai)+1}。而每个之前算法的结果都可能 阅读全文
posted @ 2013-12-07 16:38 7hat 阅读(562) 评论(0) 推荐(0)
摘要:问题:一个工厂有两条装配线a1, a2,每条装配线有n个装配站,每个编号对等的装配站功能相同。机器只要依次通过编号为1,2,...,n的装配站即可加工完成。已知两条装配线各个装配站装配所需的时间即a1,1,a1,2,...,a1,n, a2,1,a2,2,...,a2,n, 进入装配线所需时间e1,e2,离开装配线所需时间x1,x2。有时候为了加快装配进度,可以将部分完成的机器从一条装配线移到另一条装配线,所需时间分别为t1,1,t1,2,...,t1,n-1, t2,1,t2,2,...,t2,n-1. 求机器制造所需的最短时间。算法基本思路:1.计算最优解即最短时间;要求最短时间,可以看作 阅读全文
posted @ 2013-12-05 08:49 7hat 阅读(355) 评论(0) 推荐(0)