算法入门
文章平均质量分 90
为准备学算法但基础不扎实的“童鞋们”而制定的算法入门专栏
牟尼
研究方向:数据挖掘、机器学习、计算机视觉,对Web后台、游戏开发、移动开发感兴趣,对数据科学情有独钟!
展开
-
2013年蓝桥杯试题解析(一)
1.猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说: “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。pu原创 2014-02-22 15:58:40 · 4345 阅读 · 4 评论 -
打鱼还是晒网问题
打鱼还是晒网问题 中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。 问题分析:1)计算从1990年1月1日开始至指定日期共有多少天;2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;3)根据余数判断他是在“打鱼”还是在“晒网”; 若余数为1,2,3,则他是在“打鱼原创 2013-11-21 00:27:08 · 4111 阅读 · 0 评论 -
再来一种求大数阶乘的方法
过多的我就不说了,直接看看代码:java版的:/** * */package Factorial;/** * @author 牟尼(昵称) * @blog:http://blog.csdn.net/u012027907 * */public class Factorial {/* * 大数阶乘计算类 */ /* * 分析:大数阶乘用数组来存储,如5的阶乘可原创 2013-11-17 17:33:51 · 1925 阅读 · 0 评论 -
另一种求大数阶乘的算法
大数阶乘 问题描述:编写程序,对给定的n(n 注意:如果要求一个5的阶乘,用整型可以存储,求10的阶乘可以用长整型表示,但若要求100的阶乘,就无法用长整型表示,此时就必须考虑别的方法。 要求的k!的值,必定已求得(k-1)!的值,依次地推,当 k = 2时,要求的1! = 1为已知。求得(k-1)!的值后,对(k-1)!连续累加k-1此后即可求得K!值。原创 2013-11-05 00:47:17 · 5341 阅读 · 2 评论 -
几个有意思的算法题
1.题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。原创 2013-11-05 01:11:48 · 31664 阅读 · 82 评论 -
C语言经典算法100例(三)
1.河内之塔说明河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金原创 2013-10-24 01:17:54 · 10561 阅读 · 5 评论 -
C语言经典算法100例(二)
1.判断某一年是否是闰年。//判断某一年份是否是闰年int IsLeapYear(int year){ return (year % 400 == 0 || (year % 4 == 0) && (year % 100 != 0));}运行结果:2.获得某年、某月的最大天数。//获得某年、某月的最大天数int GetMaxDay(int year,int m原创 2013-10-15 00:52:20 · 20770 阅读 · 9 评论 -
C语言经典算法100例(一)
C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的、更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础。 接下来我们先来看10道: (1)输出9*9乘法口诀。 //9*9乘法口诀表void Table99(){ int i,j; for(i = 1; i <= 9; i+原创 2013-10-12 00:31:44 · 120769 阅读 · 28 评论 -
经典算法之不定方程问题
所谓不定方程,是指未知数个数多于方程个数,且对解都有一定的限制。 首先,来看一道经典的数学问题“百钱买鸡”问题。 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买鸡”问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买鸡,问翁、母、雏各几何? 意思是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,要求100文钱买100只鸡,求公鸡、母鸡和小鸡应该各买多原创 2013-10-10 23:34:04 · 2959 阅读 · 0 评论 -
常用算法之进制转换
进制转换在实际的编程中会经常使用,尤其是二进制的数。先看一个可以在16进制内任意转换的算法,实际就是:(1)10进制转为其它进制,使用辗转相除,逆序取余(2)其它进制转为十进制,则按权展开代码:public class Base { /** * 将数转为任意进制 * @param num * @param转载 2013-09-27 00:27:44 · 1444 阅读 · 0 评论 -
大数阶乘的实现
当提到计算一个数的阶乘时,也许很多人都能够轻易的解决,但很多人可能会发现,当计算100或200甚至更大的数的阶乘时,发现一般的方法无法实现,因为就拿200来说,200的阶乘的最后结果的位数达375位,一般的数据类型(如int)根本无法存储,那就得采用其他的方法来解决。 说到这里,可能有人已经想到了,没错,这与求任意位数Pi值及大整数运算的思想都是相似的,即:采用数组来存储。原创 2013-10-08 17:17:12 · 5272 阅读 · 0 评论 -
计算任意位数的Pi
当用程序实现求pi的值时,也许你能够很快写出算法(利用求pi的几个公式),但是由于使用单变量保存结果,限于计算机硬件对变量的表示范围有限,因此,最多只能计算出pi值小数点后十多位。但需要得到一个更大位数的pi值时,就得考虑其他的算法。 我们采用这个公式计算pi: pi/2 = 1+1/3+1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9+......原创 2013-10-08 01:47:01 · 7403 阅读 · 3 评论 -
关于日期的常用算法
关于日期的常用算法有很多,但如果掌握了基本的算法,难一点的可以分解为简单的,各个击破。1)判断一年是否为闰年://判断一年是否为闰年 static boolean IsLeapYear(int year){ return (year % 400 == 0 || year % 4 == 0 && year % 100 != 0); }2)获得每一年的总天数:(闰年366天,原创 2013-10-02 01:04:03 · 3848 阅读 · 0 评论 -
常用算法之最大公约数与最小公倍数
1.欧几里得算法 欧几里得算法就是采用辗转相处的方法来求最大公约数,这是计算两个数的最大公约数的传统算法,其思路如下:(1) 对于已知两数m、n,使m>n;(2)m除以n得余数r;(3)若r = 0,则n为求得的最大公约数,结束;否则执行步骤4;(4)将n的值保存到m中,将r的值保存到n中,重复执行步骤2和3。 有了最大公约数,求最小公倍数就很简单了,将两数相乘的原创 2013-09-26 00:52:19 · 1756 阅读 · 0 评论 -
基础算法思想
算法设计的任务就是:针对一个具体的问题,利用特定的方法和步骤来获取最佳结果。1.编程的灵魂:算法+数据结果 刚开始学编程的人总是会陷入这样的误区,以为学会了一门语言就学会了编程,总会学各种各样的语言。实际上,语言只是一个工具,解决具体的问题必须依赖于算法,而算法从本质上讲是数学方法的表达。通过一定的数学知识来解答。一个好的系统分析师或设计师,或许他们可以不会任何一种语言,但原创 2013-09-29 01:26:29 · 2502 阅读 · 0 评论