
算法之路
文章平均质量分 75
holymaple
这个作者很懒,什么都没留下…
展开
-
算法基础---数据结构---树和二叉树
树: 首先要清楚的概念是:1、结点的度 即该结点有多少个子结点。如1号结点的度是3。2、树的度 所有结点的度的最大值。如图,树的度是3。3、叶子结点 结点的度为0的结点。(既没有子结点)4、分支结点 除了 叶子结点 以外的所有结点。(与叶子结点互补)5、内部结点 除了 根原创 2013-02-02 11:00:12 · 592 阅读 · 0 评论 -
Josephus problem(约瑟夫问题)
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从原创 2013-02-11 14:31:57 · 762 阅读 · 0 评论 -
老鼠走迷宫I
说明:老鼠走迷宫是递回求解的基本提醒,我们在二维阵列中使用2来表示迷宫墙壁,使用1来表示老鼠走过的行走路径,试以程序球场胡入口至出口的路径。 解法:老鼠的走法有上、下、左、右四个方向在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看程序应就可以理解。 /* *内容;老鼠原创 2013-02-16 11:57:28 · 1718 阅读 · 0 评论 -
斐波那契数列(费氏数列)
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) /* * 内容:费氏数列 * 时间:2/11/2013 */#include #include #defin原创 2013-02-11 13:27:26 · 1713 阅读 · 0 评论 -
巴斯卡三角形
/* *内容:巴斯卡三角 *时间:2/13/2013 */ #include //数学公式 long combi(int n, int r){ long p = 1; for (int i = 1; i <= r; ++i) { p = p*(n-i+1) / i; } return p;}void print(int原创 2013-02-13 15:45:03 · 880 阅读 · 0 评论 -
Algorithm Gossip(基数排序,俗称桶子法)
基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。 以LSD为例,假设原来有一串数值如下所示: 73, 22, 93, 43, 55, 14, 28, 65, 39, 81 首先根据个位数原创 2013-02-11 11:55:07 · 704 阅读 · 0 评论 -
洗扑克牌 (乱数排序)
解法: 初学者通常会直接想到,随机产生1~N的乱数并将之存入阵列中,后来产生的乱数存入阵列前必须先检查阵列中是否已有重复的数字,如果有这个数字就不存入,在重新产生下一个数。运气不好的话,重复的次数就会很多,程序的执行速度就很慢了,这不是一个好办法。 以1~52的乱数排列为例好了,可以将阵列先依序由1到52填入,然后使用一个回圈走访阵列,并随机产生1~52的乱数原创 2013-02-13 17:33:16 · 1424 阅读 · 0 评论 -
老鼠走迷宫II
由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不止一条,如何求出所有的路径呢? 解法求所有的路径困哪起来复杂但其实更简单,只要在老鼠走到出口时显示经过的路径,然后退回上一格重新选择下一个位置继续递回就可以了,比求出单一路径更简单,程序只需要做一点点修改就行了。 /* *内容;老鼠走迷宫II *时间;3/01/2013 */ #include // 注:二维数组,根原创 2013-03-05 08:11:40 · 1390 阅读 · 1 评论