随笔分类 -  算法分析

摘要:题意 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。要求:输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个 阅读全文
posted @ 2019-10-25 19:40 laucheng 阅读(1086) 评论(0) 推荐(0)
摘要:题意 给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 wi ,价值vi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。有两类背包问题(根据物品是否可以分割),如果物品不可以分割,称为0-1背包问题(动态规划);如果物品可以分割,则称为背包问题(贪心算法)。 代码 阅读全文
posted @ 2019-10-25 19:37 laucheng 阅读(754) 评论(0) 推荐(0)
摘要:#include <iostream> using namespace std; int MinSubSum(int n,int a[],int &besti,int &bestj){ int sum =0,b=0; int j; for(j=0;j<n;j++){ b+=a[j]; if(b>0){ b=0; besti=j+1;//一旦b>0,抛弃前面的结果,把j的下一个位置记录下来 best 阅读全文
posted @ 2019-10-16 10:01 laucheng 阅读(276) 评论(0) 推荐(0)
摘要:#include using namespace std; int MaxSubSum(int n,int a[],int &besti,int &bestj){ int sum =0,b=0; int j; for(j=0;jsum){ sum=b; bestj=j;//bestj跟着sum更新而更新 ... 阅读全文
posted @ 2019-10-16 09:57 laucheng 阅读(159) 评论(0) 推荐(0)
摘要:一个人每次只能走一层楼梯或者两层楼梯,问走到第n层楼梯一共有多少种方法利用动态规划实现如下: 测试: 阅读全文
posted @ 2019-10-09 09:08 laucheng 阅读(1020) 评论(0) 推荐(0)
摘要:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?给定n口油 阅读全文
posted @ 2019-10-09 08:37 laucheng 阅读(1229) 评论(0) 推荐(0)
摘要:给定由n个整数(包含负整数)组成的序列a1,a2,...,an,求该序列子段和的最大值。当所有整数均为负值时定义其最大子段和为0。所求的最优值为: 例如,当(a1,a2, ……a7,a8)=(1,-3, 7,8,-4,12, -10,6)时, 最大子段和为: 分治方法求解从问题的解的结构可以看出,它 阅读全文
posted @ 2019-10-09 08:27 laucheng 阅读(614) 评论(0) 推荐(0)
摘要:动态规划(Dynamic Programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化 阅读全文
posted @ 2019-10-09 08:21 laucheng 阅读(476) 评论(0) 推荐(0)
摘要:写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。分析逆推法按三角形的行划分阶段,若行数为 n,则可把问题看做一个n-1个阶段的决策问题。先求出第n-1阶段(第n-1行上各点)到第n行的的最大和,再依次求出第n-2阶段、第n-3阶段 阅读全文
posted @ 2019-10-09 08:13 laucheng 阅读(370) 评论(0) 推荐(0)
摘要:递归与分治策略 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。 在计算机算法设计与分析中,使用递归技术往往使函数的定义和算法的描述简洁且易于理解。 例1 阶乘函数 可递归地定义为:其中:n=0 时,n!=1为边界条件n>0 时,n!=n(n-1)!为递归方程边界条件与 阅读全文
posted @ 2019-10-09 08:06 laucheng 阅读(1193) 评论(0) 推荐(0)
摘要:运行结果: number = 3 number = 13 可以看出随着盘子数量的增加,运行时间也随之增加。 阅读全文
posted @ 2019-09-25 10:57 laucheng 阅读(521) 评论(0) 推荐(0)
摘要:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以此往后,到第十天早上想再吃时,就只剩一个桃子了。求第一天共摘了多少个桃子? 递推关系: f(n)=f(n-1)/2 -1 f(n-1)=(f(n)+1)*2 边界条件: f 阅读全文
posted @ 2019-09-25 10:29 laucheng 阅读(705) 评论(0) 推荐(0)