在参加中级软件设计师的考试中,公认的最难的一部分就是算法。可是自从老师给我们讲完算法之后,就感觉算法其实也没什么。软考中,算法被分为分治法、动态规划法、贪心算法和回溯法。那么,今天我们就来说一说这几种算法。
综上,我们知道了每一种算法都有其适用的情况,我们要根据实际情况来选择适当的算法。当然,我个人认为,所有的算法都是从贪心出发,以分而治之的方法解决。对于算法更深层次的理解,还需要我们在今后实际使用的过程中慢慢体会。...
分类:
编程语言 时间:
2015-05-19 08:55:17
阅读次数:
307
问题的描述
假如我们用C表示最大价值,那么C[n,W]就表示n个物品,在背包容量为W时,背包的最大价值。
在求这个最大价值之前,我们可能会考虑某一子问题的最大价值,用C[i,w]表示,意思是该子问题中,有i个物品,背包的最大容量为w时的最大价值。
三种情况
情况1:假如这个子问题中,i=0或w=0,那么c[i,w]=0。
情况2:假如在该子问题中,在i个物品当中,有的物品根本就装不进背...
分类:
其他好文 时间:
2015-05-15 13:42:35
阅读次数:
118
0-1背包问题
问题描述
给定n个物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为W。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?约束条件
放入背包的物品的重量<=背包容量W
物品只能进入背包或不进入背包,不可拆分,区别于部分背包问题。求解目标
我们可以这样来刻画问题的解。
假如有n个物品,用Xi表示第i个物品的状态。Xi 的值为0或1。0表示物品未...
分类:
其他好文 时间:
2015-05-15 09:07:17
阅读次数:
96
动态规划法基本思想: 将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。 比如说迈台阶问题题目描述 有一个有n级台阶的楼梯,上楼时可以一次迈一级,或者一次迈二级,或者一次迈三级,或者一次迈四级;问共有多少种上楼梯迈台阶的方法。(注意结果可能有点大。)输入 只有一行且只有一个正整...
分类:
其他好文 时间:
2015-04-23 12:25:20
阅读次数:
140
回文检测,参考http://blog.csdn.net/feliciafay/article/details/16984031使用时间复杂度和空间复杂度相对较低的动态规划法来检测,具体的做法图一 偶数个回文字符情况图二 奇数个回文字符情况核心就是如果一个子串是回文,如果分别向回文左右侧扩展一个字符相...
分类:
其他好文 时间:
2015-04-12 20:52:05
阅读次数:
125
题目:如图所示, 3 2 3 4 3 4 47个数字构成三层的数字三角形,从属关系为树形关系。要求按照从属关系,在每一层选择一个数,使最后的和最大。分析:如果从下往下选择的话,越往下选择越多,问题就越复杂。考虑从下往上选择,采用动态规划法,从局部开始考虑。局部最大,则构成整体最大。我是用C++写的....
分类:
其他好文 时间:
2015-04-10 17:15:14
阅读次数:
156
最大连续字数组
给定一个数组A[0,1,…,n-1],求A的连续子数组,使得该子数组的和最大。
例如:
数组:1,-2,3,10,-4,7,2,-5
最大字数组:3,10,-4,7,2
此问题有以下四种方法
1、 暴力法
2、 分治法
3、 分析法
4、 动态规划法
暴力法
直接求解A[I,…j]的值,其中,0
//暴力法
int MaxS...
分类:
编程语言 时间:
2015-04-08 19:52:41
阅读次数:
184
Best Time to Buy and Sell Stock I题意:用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。 如果只允许进行一次交易,也就是说只允许买一支股票并卖掉,求最大的收益。分析:动态规划法。从前向后遍历数组,记录当前出现过的最低价格,作为买入价格,并计算以当天价格出售的收益,作为可能的最大收益,整个遍历过程中,出现过的最大收益就是所求。**代码:**O(n)时...
分类:
其他好文 时间:
2015-04-06 11:28:27
阅读次数:
142
A robot is located at the top-left corner of a m x n grid(marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time. Therobot is trying to reach the bott...
分类:
其他好文 时间:
2015-02-10 23:18:37
阅读次数:
390
我们知道人民币有1、2、5、10、20、50、100这几种面值。
现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。
本文使用了回溯法和动态规划法来解决找零钱问题。...
分类:
编程语言 时间:
2014-12-31 18:27:12
阅读次数:
252