
《计算机算法设计与分析》学习记录
《计算机算法设计与分析》学习记录。
笨手笨脚°
这个作者很懒,什么都没留下…
展开
-
活动安排问题-计算机算法
贪心算法基本思想在对问题求解时,总是遵循某种规则做出在当前看来是最好的选择,期待通过所做的局部最优选择来产生一个全局最优解。缺点贪心算法不是对所有问题都能得到整体最优解。例子从前有一只鹅,一天可以下两个金蛋,但是在第一天直接杀了它可以拿到二十个金蛋。问如何在21天内拿到尽量多的金蛋?动态规划:当n=21时会选择最后一天杀,能拿到40个金蛋;贪心算法:第一天杀,能拿到20个金蛋。结论:贪心算法求解的结果不一定是全局最优解。但对于某些问题来说用贪心算法刚好能得到全局最优解。例子出处基本要原创 2020-07-07 10:42:04 · 1552 阅读 · 0 评论 -
最长公共子序列-动态规划-计算机算法
问题描述:给定两个字符串,求解这两个字符串的最长公共子序列。如:S1={1,5,2,8,9,3,6},S2={5,6,8,9,3,7},其最长公共子序列为{5,8,9,3},最长公共子序列长度为4。最优子结构性质分析:设序列S1={x1,x2,…,xn}和S2={y1,y2,…,ym}的最长公共子序列为S={z1, z2,…, zk} ,则1)若xn=ym ,那么 zk=xn=ym 且 S[k-1]是S1[n-1] 和 S2[m-1]的最长公共子序列;2)若xn≠ym 且 zk≠xn 则 S[k原创 2020-06-29 21:57:57 · 3797 阅读 · 12 评论 -
矩阵连乘问题-动态规划-计算机算法
问题描述问题分析建立递归关系代码实现#include <iostream>#include <algorithm>#include <iomanip>using namespace std;#define MAX 0xfffffff#define N 100int n;int p[N];int s[N][N],dp[N][N]; //S存储切割位置,dp存储最优值 void MatricChain(){ for(int i=0;i&l原创 2020-06-26 16:11:10 · 2592 阅读 · 2 评论 -
【学习记录】合并排序(归并排序)-分治法-计算机算法
讲解过程-合并算法讲解产生随机数表的代码#include<iostream>#include<fstream>#include<stdlib.h>#include<ctime>using namespace std;int main() { srand(time(0)); ofstream output("input.txt");...原创 2020-04-13 23:07:38 · 1724 阅读 · 2 评论 -
分治和主定理的推导
不想看文字的可以在B站看详细的讲解,点击蓝字->分治和主定理的推导分治的基本思想 分治法能解决的问题一边具备以下几个特征分治法的时间复杂度分析那么现在要做的就是要根据这个递推方程求出T(n)。在这里要引入一个概念——递归树。例如,根据左边的递推方程构建出来的递归树如右图所示:树的权值为合并子问题所需要的时间。理解了递归树之后我们来求解T(n)。现在来化简T(n)。...原创 2020-03-18 23:21:00 · 2023 阅读 · 1 评论 -
汉诺塔问题的递归算法和非递归算法分析
汉诺塔问题的递归算法和非递归算法分析第一次发博客,想要以此记录自己的学习过程,也方便以后查看复习。希望能坚持下去。问题描述相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘(依次标号1到n)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,...原创 2020-03-11 12:13:04 · 6610 阅读 · 3 评论 -
字典序问题(C++)-计算机算法设计与分析第一单元算法实现题1-2
字典序问题题干分析字符串按字母顺序a,b,c,d,e,f,g…任意组合,且每个字母只出现一次,并按顺序进行编号,组合后的字符串长度最低是1,即a编号为1,之后依次为其他组合情况编号,组合字符串长度最高是6,即uvwxyz是编号的最后一个。现给出一串字符,求其编号。算法分析假设求长度为n的字符串的编码。则长度小于(n-1)的字符串组合包括所有情况,用组合公式可算出。如,长度为2的字符...原创 2020-02-23 17:52:54 · 2090 阅读 · 2 评论