- 博客(7)
- 收藏
- 关注
原创 最长公共子序列(C语言)
问题1:钢条切割问题2:矩阵链乘法《算法导论》中动态规划的第三个问题是最大子序列这里的最大子序列的定义是:找出一个序列S3,S3在S1和S2中都出现,且出现的顺序相同,现在找出最长的一个S3。对于序列A=“ABCBDAB”,B=“BDCABA”他的一个最大子序列是“BCBA”。...
2021-04-01 21:23:43
5817
原创 算法导论——钢条切割问题(C语言)
《算法导论》在对动态规划讲解时,第一个问题就是钢条切割的问题。在书中,对这个问题提供了3种思路利用普通的递归来解,时间复杂度为O(2^n)对普通的递归进行优化,使其带有记忆功能,减少运行时间。即自顶向下的动态规划运用数组,自底向上的动态规划现在依次讲解这三个思路,并且用代码实现它们!首先先看题现在给你一根钢条,你可以把它切成几个小部分(也可以不用切割),要找到一种方法,使得这根钢条可以卖出最多的价钱。如:长度为4的钢条有三种卖法不切割直接买,可以买价格9切割为1,3再买,同样是价
2021-03-25 23:30:17
3841
3
原创 广度优先搜索邻接矩阵表示——(C语言)
在图论算法中图的表示主要有有邻接矩阵和邻接表两种表示法,在这篇文章之前,已经发布了dijkstra算法的邻接表表示法dijkstra算法的邻接表表示两种表示法的算法思路是一样的,只是表示的方式不同而带来了代码表示上的细微区别。个人认为邻接矩阵的表示法更为简洁,有邻接表有些繁琐。由于思路相似,所以这里只记录代码上的区别;首先在数据的输入上,以矩阵来储存图上各点的连通性int map[9][9]={0}; for(i=0;i<9;i++) { printf("输入与第%d个点相连的点:
2021-03-22 00:10:20
512
1
原创 网络流——最大流算法(C语言实现)
最大流算法最大流算法是图论的一个重要算法,可以应用在管道运输等方面。现在给出一个有向图,点1为出发点,点6为收点,计算由点1到点6的最大流
2021-03-11 15:39:49
3080
原创 dijkstra算法笔记(C语言实现,显示路径)
dijkstra算法(迪杰斯特拉算法)笔记(C语言实现,显示路径)具体描述每一步的运行情况在学习完广度优先搜索之后,了解了在无权图中怎么找出最短路径。但广度优先搜索解决不了当边具有权值的情况。dijkstra算法就是解决这种情况的算法。一个具有边权的图:现在,以1位初始点,找出各点到1的最短距离,并且显示路径。首先创建一个结构数组,来储存各点的信息:struct item{ int key; //这个点是否被访问 int dis; //这个点到原点的距离 int
2020-12-01 23:33:55
1190
原创 最小生成树Prim算法笔记(C语言实现)
最小生成树Prim算法笔记(C语言实现)最小生成树书上的定义是:一个无向图G点最小生成树就的由该图的那些链接G的所有顶点的边构成的树,且总价值最低所以,一个最小生成树,要具有原图的所有顶点,且这些顶点用一种方法连接起来,所有边的和具有最小的权值。一个图:它的最小生成树: 现在来看如何由Prim算法得到最小生成树首先,把所有的边都去掉,把这个图上所有的点组成一个点集。可以任选一个初始点(这里选择第1个点作为初始点)。在到与1相连的边里面,找一个权值最小的:显然,在与1相连的2,4,1中1
2020-11-30 22:38:02
2403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人