算法
文章平均质量分 57
yingmuliuchuan
这个作者很懒,什么都没留下…
展开
-
算法之河内之塔
河内之塔程序员应该都清楚,简单介绍一下背景:传说创世纪之时,在Benares有一座波罗教塔,是由三根钻石棒支撑,神在第一根柱子上放置了64个金盘,金盘由上至下依次由小及大。神命令僧侣从第一根柱子上将金盘挪到第三根柱子上,并且挪动的过程中,始终保持大盘在下。当盘子全数搬运完成,该塔自毁,世界末日。该问题简单解决方案如下:抽象三根柱子为A,B,C,并由简单的一个盘开始类推:只有一个盘,原创 2017-11-28 18:56:12 · 247 阅读 · 0 评论 -
算法之过河问题
过河问题,一只袋鼠需要过河,现在两岸之间由N个树桩,每个树桩对应一个弹力值。比如第一个树桩上弹力值是2,那么就可以跳2个树桩,如果树桩上弹力值是0,那么就会被困在该树桩上。那么请输入相应的树桩个数和树桩的弹力值的情况下,输出需要几步才能过河。初步分析该问题,涉及到了DP算法,对于这个算法我理解的还不是很透彻,可以参照如下链接:http://www.cnblogs.com/sdjl/arti原创 2017-12-30 15:36:46 · 1036 阅读 · 0 评论 -
算法之倒序输出句子
本次讲一下倒叙输出句子的简单算法,倒序输出有很多种方式,其中一种是给出一个句子,由空格和单词组成,请给出算法,倒序输出。本题相对简单,基本算法就是根据提示只有空格和单词,纳闷我们就可以以空格为边界,具体取后面的单词来实现倒序输出。具体code如下:由code可以看出,基本逻辑就是for循环根据空格取子串的操作。#include#includeusing namespace std;i原创 2017-12-27 18:53:53 · 1298 阅读 · 0 评论 -
算法之星际迷航
最近看了一个星际迷航的题目,突然发现自己的数学水平都没有初中水准了说是一个卫星发射损耗x,回收损耗x^2,那么问一艘耐久度为 h 的飞行器,假设在飞行过程中不产生损耗,那么为了保证其可以安全的到达目的地,只考虑整数解,至多发射过程中可以承受多少程度的损耗?这个题目乍一看根本不能算是算法题啊,只能算小学一元二次方程的题目。但是写着写着,突然不会算x+x^2后来经过多次绞尽脑汁,最终才原创 2018-01-01 13:21:05 · 432 阅读 · 0 评论 -
算法之最大数问题
本次是一个整数,随意抽取其中的n个位置上的数值,求剩下的整数最大值是多少.条件:整数 去掉n位 顺序不变 剩下的最大值本题目又是一个将整型问题转化成字符串问题的经典案例,如果一个整数取出几位,保持最大,那么只要保证取出的位置的数值比前一位小就行了。这个时候对应到字符串上就是取出某个位置的数值,而且该位置的数值比后一位的数值小。比如原始整数是5263452,要求取出3原创 2018-01-01 12:58:27 · 665 阅读 · 0 评论 -
经典算法之数串
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。输入:正整数个数,正整数数值输出:拼接的最大值(或最小值)该问题仔细分析一下其实算是一种比较高端的排序问题,但是不是普通的数值排序,而是将输入的值转换为字符串进行字符串排序,然后拼接。加入A和B是其中的两个数值,重点是需要比较“A”+“B” 与 “原创 2017-12-23 16:04:41 · 1308 阅读 · 0 评论 -
算法之老鼠找迷宫2-找出所有出路
接着上一篇的想法,逻辑控制只找到了一条出路,现在我们想找出所有出路怎么办?如果迷宫的设计使得走法不止一种,则只要在老鼠走至出口时显示出所有的路径,然后退回上一格重新选择下一个位置继续递归就可以了。如下图有两种走法。#include#includevoid visit(int,int);int maze[9][9] = {{2,2,2,2,2,2,2,2,2},原创 2017-12-05 10:30:25 · 487 阅读 · 0 评论 -
算法之老鼠走迷宫1-找一条路
老鼠走迷宫问题是递归的一个经典应用算法:基本描述如下有一个只老鼠在迷宫里,随便给几个起点,给一个终点,找出一条由起点到终点的连通路径。简单设计如下:老鼠在任何一点的行动方向都有四种可能行,上下左右;每当发生一次移动之后,下一次移动又有四种可能性。因此可以用递归来解决该问题,为了代码中直观地显示,我们设计一个二维数组,其中2表示墙,0表示路,1表示老鼠走过的路。具体代码如下,可以看代码里的详原创 2017-12-04 19:24:33 · 978 阅读 · 0 评论 -
算法之三色旗
三色旗,顾名思义,就是三种颜色的旗子,红白蓝,乱序地寄在一根绳子上,现在需要按照顺序排列,分别是前面旗子为蓝色,中间为白色,后面为红色。每次只能调换两个旗子,如何在移动次数最少的情况下,排序成功。本案例算法其实算是经典的排序问题,通过不断移动对比来进行排序,如下图所示:假设排好序后,那么a代表头指针对应蓝色,b代表移动指针对应白色,c是尾指针对应红色;核心思想是通过b的移动,并原创 2017-12-02 17:11:16 · 762 阅读 · 0 评论 -
算法之帕斯卡三角形
帕斯卡三角形在现实中有比较多的应用,其中比较广泛的就是n次多项式的系数,具体如图所示:可以看到基本规律如下:1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。2、第n行的数字个数为n个。3、第n行数字和为2^(n-1)。4、每个数字等于上一行的左右两个数字之和。可用此性质写出整个帕斯卡三角形。5、将第2n+1行第1个数,跟第2n+2行第3个数原创 2017-11-30 14:49:36 · 11369 阅读 · 0 评论 -
算法之费氏序列
费氏序列:基本是以兔子为模型的,这里暂且不考虑公母啊,怎么生的问题。就是有一只兔子,每个月生一只兔子,小兔子一个月后又可以投入生产,这样两个月后就有2只兔子,三个月后有3只兔子,四个月后就有5只兔子。。。。。。由此可以列出一串数字:1 , 1, 2, 3 ,5 ,8 ,13 ..........简单归纳一下可以发现当第一个月和第二个月的时候都只有1只兔子,之后的兔子数目为前两个月的兔子之和原创 2017-11-29 11:02:29 · 601 阅读 · 0 评论 -
复杂问题简单化的表驱动法
之前在看一些算法和面试题目时经常会碰到类似于:请写一段程序,输出某个月份有多少天;某个班级成绩根据分数段划分为A,B,C,D,E之类的。之前都是不假思索,这类问题这么简单,最直接if-else解决就可以了,为什么会考。知道阅读《代码大全》中的表驱动法才发现,这类简单的问题中原来蕴藏着表驱动法这么高端的编程方法。下面具体介绍一下: 表驱动法是一种编程模式,从表里面查询信息而不使用逻辑语句...原创 2018-02-24 15:13:43 · 283 阅读 · 0 评论