![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
非递归优化
QiaoRuoZhuo
这个作者很懒,什么都没留下…
展开
-
最短路径算法集锦
列举了深度优先搜索的递归和非递归算法,Dijkstra最短路径算法, 基于Bellman-Fort最短路径算法的改进型广度优先搜索算法, Floyd-Warshall最短路径算法的原始版和变化版 本文是阅读《啊哈!算法》后的学习笔记,代码与教材中有些差异,若有错误请指正,谢谢!原创 2014-11-13 22:27:28 · 1297 阅读 · 1 评论 -
算法导论读书笔记之钢条切割问题
给定一段长度为n英寸的钢条和一个价格表 pi (i=1,2, …,n),求切割钢条的方案,使得销售收益rn最大。注意,如果长度为n英寸的钢条价格pn足够大,最优解可能就是完全不需要切割。若钢条的长度为i,则钢条的价格为Pi,如何对给定长度的钢条进行切割能得到最大收益?原创 2014-12-12 21:39:52 · 1672 阅读 · 0 评论 -
史上最简明易懂非递归遍历二叉树算法
三种不同的遍历方式区别在于栈空间的释放时机和输出结点信息时机的不同:先序和中序遍历是在访问栈顶元素的右孩子(右子树)之前退栈,而后序遍历在访问右子树之后退栈;先序遍历是在某结点入栈时输出其信息,而中序和后序遍历是在该结点退栈时输出其信息。 无论是递归算法还是非递归算法,都遵循上述规则,二者可以一一对应。图示如下:原创 2014-10-29 14:59:02 · 5666 阅读 · 0 评论 -
装载问题
有一批共有n个集装箱要装上两艘载重量分别为 c1 和 c2 的轮船,其中集装箱 i 的重量为 w[i], 且重量之和小于(c1 + c2)。装载问题要求确定是否存在一个合理的装载方案可将这 n 个集装箱装上这两艘轮船。如果有,找出一种装载方案。原创 2017-03-08 16:18:09 · 1258 阅读 · 0 评论 -
0-1背包问题(回溯物品类)
0-1背包问题(回溯物品类)原创 2017-03-08 16:16:24 · 985 阅读 · 0 评论 -
0-1背包问题(回溯结点类排序改进)
0-1背包问题(回溯结点类排序改进)原创 2017-03-08 16:17:19 · 730 阅读 · 0 评论 -
0-1背包问题(回溯算法多个数组)
给定n中物品和一个容量为c的背包,物品i的重量为Wi,其价值为Vi,0-1背包问题是如何选择装入背包的物品(物品不可分割),使得装入背包的物品的价值为最大。原创 2017-03-08 16:09:34 · 679 阅读 · 0 评论 -
求第k小元素的快速排序算法
/* Name: 第k小元素 Copyright: Author: Date: 13-04-17 15:28 Description: 求一列数中的第k小元素,利用分治的策略进行递归求解。 模仿快速排序法的思路,只不过每次只递归处理第k小元素所在的序列。 使用消除尾递归优化后效果更好。 */#include#include#include#include原创 2018-01-13 22:16:47 · 1086 阅读 · 0 评论 -
迷宫问题之深搜
#!/usr/bin/python3# 文件名: StackClass.pyfrom StackClass import ListStack,LinkStackOPEN, CLOSE, PASSED, ROAD = 0, 1, 2, -1 #分别表示该点通,不通,已走和属于所选路径dirs = ((0, 1), (1, 0), (0, -1), (-1, 0)) #分别向东南西北走的行列...原创 2018-12-13 23:19:36 · 280 阅读 · 0 评论 -
素数环问题
/* Name: 素数环问题 Copyright: Author: 巧若拙 Date: 14/12/18 22:17 Description: 素数环问题:把整数1~n填写到一个环中,要求每个整数只能填写一次,并且相邻两个数的和为素数。易知n为偶数。因为所有的数字地位相同,为避免重复,可确定第一个数字为1,从第二个数字开始递归处理。 利用回溯思想...原创 2018-12-14 22:30:46 · 1095 阅读 · 0 评论 -
排列数问题
/* Name: 排列数问题 Copyright: Author: 巧若拙 Date: 15/12/18 13:25 Description: 排列数问题 设有n个整数的集合{1,2,3,。。。,n},从中任意取出r个数进行排列(r<=n),试列举所有的排列。算法分析:从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作...原创 2018-12-15 13:50:21 · 1056 阅读 · 0 评论 -
拆分自然数
/* Name: 拆分自然数 Copyright: Author: 巧若拙 Date: 15/12/18 13:25 Description: 拆分自然数Problem Description任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。Input输入有多组数据,对于每组数据就一个数n。Output对于每组输入输出n的拆分...原创 2018-12-15 15:01:05 · 371 阅读 · 0 评论 -
杭州电子科技大学Online Judge 之 “水仙花数(ID2010)”解题报告
其实这道题真是一道水题,我写这篇解题报告的目的是为了引出更难的一道:题目描述:水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 1^3 + 5^3+ 3^3。 本题要求编写程序,计算所有N位水仙花数。原创 2014-11-23 21:18:51 · 3111 阅读 · 0 评论 -
算法进化历程之“n皇后问题”
本文介绍了4种方法来解决n皇后问题,其中有用二维数组的,有用一维数组的,有用递归方法的,有非递归方法的,可以看看。原创 2014-12-26 13:45:36 · 1013 阅读 · 0 评论 -
迷宫寻址中深度优先搜索的递归和非递归算法比较
本文只探究迷宫寻址中深度优先搜索的递归和非递归算法比较,其他相关代码详见《迷宫问题(巧若拙)》http://blog.csdn.net/qiaoruozhuo/article/details/41020745原创 2014-11-12 15:52:20 · 1991 阅读 · 0 评论 -
北京大学Online Judge 之 “求高精度幂(ID1001)”解题报告
本题考查的知识点是高精度浮点数计算。为了便于进位,本程序采用了较为独特的数据结构,即把浮点数分成整数和小数部分,分别存储在两个不同的数组中。其中整数部分数字存储在ValInt[MAX-lenInt...MAX) ,小数部分数字存储在ValDec[1...lenDec],ValDec[0]用来存储进位或借位。这样在计算中补齐0的时候不需要移动数组元素,只需移动下标即可,大大提升了效率。原创 2014-11-08 10:27:36 · 2230 阅读 · 0 评论 -
图的割点(邻接矩阵实现)
在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。求割点与桥的算法是R.Tarjan发明的,本文用邻接矩阵存储图的信息,实现了递归和非递归两种算法。 感觉非递归算法或许有更好的表达,但一时想不出来,请大牛指点,谢谢!原创 2014-11-21 21:11:01 · 1551 阅读 · 0 评论 -
图的割点(边表集实现)
在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。求割点与桥的算法是R.Tarjan发明的。本文用边表集存储图的信息,实现了递归和非递归两种算法。原创 2014-11-21 08:27:03 · 1830 阅读 · 0 评论 -
高精度浮点数运算
本程序实现了高精度浮点数的加法,减法,乘法,乘方和除法运算,有效数字精确到MAX。 为了便于进位,本程序采用了较为独特的数据结构,即把浮点数分成整数和小数部分,分别存储在两个不同的数组中。其中整数部分数字存储在ValInt[MAX-lenInt...MAX) ,小数部分数字存储在ValDec[1...lenDec],ValDec[0]用来存储进位或借位。这样在计算中补齐0的时候不需要移动数组元素,只需移动下标即可,大大提升了效率。原创 2014-11-08 10:13:20 · 6331 阅读 · 2 评论 -
单链表逆置
单链表逆置是链表的基本操作之一,我分别用递归和非递归两种方式实现单链表(不含头结点)的逆置,代码还是比较简洁的,欢迎批评指正。原创 2014-11-22 17:00:02 · 1275 阅读 · 0 评论 -
有序链表的合并
有序链表的合并是单链表的基本操作之一,本文分别用递归和非递归两种方式实现两个有序链表(不含头结点)的合并。原创 2014-11-22 18:11:43 · 1042 阅读 · 1 评论 -
算法进化历程之“归并排序”
归并排序是分治算法的典型运用,其中先分治,再合并的思路真是美妙至极。本文介绍了递归和非递归两种归并排序的实现方法,其中非递归算法和高效的合并函数属本人原创,虽然经过小规模数据的测试,但也可能存在纰漏,欢迎批评指正,谢谢!原创 2014-10-18 10:26:19 · 857 阅读 · 0 评论 -
算法进化历程之“快速排序”
快速排序是在实践中最快的已知排序算法,它的版本非常多,本文将给出常见的一些版本并分析其优化过程。总共10个版本,看起来很过瘾哦!由于是借鉴各种书籍后,自己再重新编写的,所以有可能有些地方会有小问题,欢迎批评指正。原创 2014-10-15 23:15:47 · 947 阅读 · 0 评论 -
迷宫问题
分别实现了广度优先搜索和深度优先搜索最短路径算法,还给出了深度优先搜索路径(非最短路径)的递归和非递归两种算法。 地图的设计可选择机器随机设计和人工设计,还可以进行人工修改地图。原创 2014-11-11 22:37:33 · 1170 阅读 · 0 评论 -
n皇后问题
采用非递归的回溯法解决n皇后问题,为了减少计算,采用了输出对称图形的方法,这样时间可以节省一半。 亮点是图像的输出,来自《C/C++算法手册》,很漂亮。原创 2014-12-24 22:01:50 · 1080 阅读 · 0 评论 -
将整数n分成k份(回溯)
/* Name: 将整数n分成k份(回溯) Copyright: Author: 巧若拙 Date: 16/12/18 13:25 Description: 将整数n分成k份将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少...原创 2018-12-16 16:40:45 · 4556 阅读 · 2 评论