算法思想
Weiami
以梦为马,以汗为泉,不忘初心,不负韶华。
展开
-
算法思想_动态规划
动态规划 1.思想: 上一篇文章算法思想_分治的思想是将问题转化为多个相互独立且结构相同的子问题,如果遇到的子问题不是相互独立的,而是具有一定联系的,此时就需要考虑到动态规划。 动态规划同样是将问题转化为多个子问题,只不过子问题之间不再是相互独立的,而是要在之前阶段子问题解的基础上获得当前阶段子问题的解。 2.举例:背包问题。有n件物品和容量为c的背包,给出物品的重量及价值,求解怎样选择物品才能使装入背包的物品重量不超过背包原创 2020-07-27 11:50:15 · 128 阅读 · 1 评论 -
算法思想_分治
分治 1.思想:将问题转化为不同层次的子问题,每个层次的子问题相互独立且结构相同,通过求解低层次的子问题,逐步递增到高层次的子问题,最后得到问题的解。自顶向下——分;自底向上——治;最后合并。 2.举例:归并排序。 3.C语言实现:请见博文排序算法的归并排序。 ...原创 2020-07-27 10:29:29 · 90 阅读 · 0 评论 -
算法思想_递归
递归 1.思想:将问题转化为小规模的子问题,先求出低层次子问题的解,然后利用相同的方法求高层次的解,最终获得问题的解。 2.举例:兔子问题。此时分析兔子问题可发现,其对应Fibonacci数列,第一项和第二项都是1,从第三项开始,每一项都等于前两项的和。 3.C语言实现: #include <stdio.h> int Fibonacci(int m) { int n1, n2, n; if(m == 1 || m == 2) return 1; else { n原创 2020-07-27 10:14:27 · 75 阅读 · 0 评论 -
算法思想_递推
递推 1.思想:从已知条件出发,逐步推出问题的解。回忆初中和高中的数学推理题,用到的因为所以就是递归思想的体现。 2.举例:兔子问题。一对大兔子每月可以生一对小兔子,新生的小兔子一个月后长成大兔子,且具备繁殖能力。如果不发生死亡,问一年之后有多少对兔子? 3.C语言实现: #include <stdio.h> int main() { int m, n1, n2, num; n1 = n2 = 1; for(m = 1; m <= 12; m++)原创 2020-07-27 09:50:36 · 162 阅读 · 0 评论 -
算法思想_穷举
穷举 1.思想:已知问题,确定问题的可能解,将可能解代入问题进行验证。回忆小学的数学题,大部分都利用到穷举思想。 2.举例:百钱买百鸡。鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何? 3.C语言实现: #include <stdio.h> int main() { int cock, hen, chick, i; i = 0; for(cock = 0; cock <= 100; cock++) for(hen = 0; hen &l原创 2020-07-27 09:38:06 · 77 阅读 · 0 评论