wanlifeipeng

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  算法基础

摘要:从键盘输入一个整数(1~20)则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5输入数字4, 则程序输出:1 2 3 412 13 14 511 16 15 610 9 8 阅读全文
posted @ 2017-05-11 14:27 wanlifeipeng 阅读(1756) 评论(0) 推荐(0)

摘要:1.每次可以走1步,或两步,求走n级台阶的方案个数 分析,其实就是斐波那契数列,无论怎么走,最后一步要么走1级,要么走2级,所以n级方案等于n-1级和n-2级方案之和 对于上述方案,当n很大时用时会非常长。因为中间存在大量重复的计算结果,例如当n=45时: walkStairs(45) = walk 阅读全文
posted @ 2017-05-09 23:00 wanlifeipeng 阅读(350) 评论(0) 推荐(0)

摘要:例如: 从5个不同的球(A B C D E)中取3个共有10中情况 如下图: A B C A B D A B E A C D A C E A D E B C D B C E B DE C D E 下假设将C球图上颜色,则上面的10中情况,可细分为包含涂色的球(3个球中一个已确定,剩余两球在四种求中选 阅读全文
posted @ 2017-05-09 20:24 wanlifeipeng 阅读(237) 评论(0) 推荐(0)

摘要:有5个球(A B C D E),先要从中选出3个,求所有可能的情况。 思路: 对于每个球,只有两种状态,选择与非选择 从A球开始,如果选择了A球,则需要从剩下的(B C D E)球中选择2个球 如果不选A球,则需要从剩下的(B C D E)球中选择3个球 分别继续递归,知道待选的球数目为0 Java 阅读全文
posted @ 2017-05-09 17:41 wanlifeipeng 阅读(152) 评论(0) 推荐(0)

摘要:有A,B,C, D四个数,求他们的全排列: 首先选取第一位,有四种情况 A B C D B A C D C B A D D B C A 对于剩下的三个数字,用同样的方法,先确定第一个数字即可。以BCD为例,有 B C D C B D D B C ..... 1.从N个数中取出N个进行全排列 Java 阅读全文
posted @ 2017-05-09 16:20 wanlifeipeng 阅读(182) 评论(0) 推荐(0)

摘要:数字或字母可以用7位数码管显示(就是排列为8字形的7个数码管) 对于大型灯管,为了节约使用,在切换数字的时候,如果该灯管的状态没有改变,则不需要对该灯管关了再开。 已知一个数字变化的系列,求7个数码管开关的动作。 思路: 我们知道将数码管开启的时候是所有的灯都先亮一下(即亮出8这个数字),然后才会变 阅读全文
posted @ 2017-05-08 11:32 wanlifeipeng 阅读(472) 评论(0) 推荐(0)

摘要:思路: 现将变动部分用常数代替,再逐步将常数替换为变数(变量) 关键是寻找变化的规律,如果不直观,可以列出所有变化,进行比对,然后设计公式 实例: 1.输出三角星号 首先找规律,发现每一行都是先输出空格,然后输出*号,空格、信号与行号的关系如下: 行号 空格数 星号数 1 4 1 2 3 2 3 2 阅读全文
posted @ 2017-05-07 16:00 wanlifeipeng 阅读(2075) 评论(0) 推荐(0)

摘要:衡量一个软件质量的标准是什么? 正确性,运行效率,稳定性,容错,容灾能力,可读性(有时候甚至可以牺牲效率,来保证代码的逻辑清晰,简明,以便后期的阅读修改和维护)。。。 提高可读性的方法 增加注释 控制函数内代码行数 控制循环嵌套层数 使用贴切的变量或函数命名 。。。 最本质的: 逻辑尽量简短、清晰 阅读全文
posted @ 2017-05-07 12:16 wanlifeipeng 阅读(297) 评论(0) 推荐(0)

摘要:暴力破解的缺点: 循环次数过多 多层循环容易造成分支数爆炸 递归也会引发指数增长 剪枝: 尽早结束无意义的运算分支 尽量选择分支少的为循环条件 优点: 提高计算速度和效率 实例分析: 1.已知要找的总额,和提供的各种面值 例如:要找8元零钱,可以使用5元,2元,1元和5角组合。 代码: 这个问题本身 阅读全文
posted @ 2017-05-06 22:07 wanlifeipeng 阅读(291) 评论(0) 推荐(0)

摘要:计算机的优势: 计算速度 最笨的计算方法: 直接枚举每种可能的情况 情况属不是天文数字即可 要做到不遗漏 最好能不重复 实例: 1.鸡兔同笼 鸡兔共有50头,脚120只,问鸡兔各自的数量 2.韩信点兵 部队人数大约有1000多人,不到2000,采用报数的方式,得到以下结果: 5人一组余1人, 7人一 阅读全文
posted @ 2017-05-06 21:17 wanlifeipeng 阅读(209) 评论(0) 推荐(0)