算法
文章平均质量分 72
牟尼
研究方向:数据挖掘、机器学习、计算机视觉,对Web后台、游戏开发、移动开发感兴趣,对数据科学情有独钟!
展开
-
2014百度校招笔试题
二、算法与程序设计题(本题共45分)1. 使用C/C++编写函数,实现字符串反转,要求不使用任何系统函数,且时间复杂度最小,函数原型:char* reverse_str(char* str)。(15分) 算法实现:/*实现字符串翻转*/char* reverse_str(char* str){ if(NULL == str) //字符串为空直接返回 { retur原创 2013-10-01 00:46:37 · 3618 阅读 · 2 评论 -
2013年蓝桥杯试题解析(一)
1.猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说: “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。pu原创 2014-02-22 15:58:40 · 4345 阅读 · 4 评论 -
最长公共子序列
最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述: 最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。原创 2014-03-15 00:41:02 · 1545 阅读 · 0 评论 -
街区最短路径问题
街区最短路径问题时间限制:3000 ms | 内存限制:65535 KB难度:4 描述一个街区有很多住户,街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。用(x,y)来表示住户坐在的街区。例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。现在要建一个邮局,使得原创 2014-03-15 23:52:20 · 2026 阅读 · 0 评论 -
A+B问题II
A+B Problem II时间限制:3000 ms | 内存限制:65535 KB难度:3描述 计算两个数的和!(要求能计算1000位以内的数的和)样例输入112233445566778899 998877665544332211样例输出1111111111111111110简单说:就是大数相加!代码:原创 2014-03-17 23:42:49 · 1469 阅读 · 0 评论 -
分解质因数
分解质因数 问题描述:求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=2*25=56=2*37=78=2*2*29=3*310=2*5提示 先筛出所有素数,然后再原创 2014-03-18 00:53:30 · 2272 阅读 · 0 评论 -
矩形面积交
矩形面积交问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。样例输入原创 2014-03-18 11:31:23 · 1838 阅读 · 1 评论 -
幸运数
幸运数问题描述幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,....1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 ....把它们缩紧,重新记序,为:1 3 5 7 9 .... 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的原创 2014-03-19 00:22:50 · 1882 阅读 · 0 评论 -
数字统计
Problem2: 题目描述: 输入一组数据,统计每个数出现的次数,并按照数字的大小进行排序输出。 输入: 输入20个数字,数字之间用空格隔开。 输出: 统计每个数字出现的次数,并按数字的大小输出数字及其出现的次数. 样例输入: 209 8 5 1 7 2 8 2 9 10 1 7 8 9 5 6 9 0 1 9 样例输出: 0:1 1:3 2:原创 2014-08-24 01:22:18 · 2186 阅读 · 0 评论 -
新的斐波那契数列
Problem1: 题目描述: 定义一个新的斐波那契数列: F(0)=7; F(1)=11; F(n)=F(n-1)+F(n-2);(n>=2) 输入: 输入有多组;首先输入一个N(N输出: 求F(n)能否被3整除,若能整除输出‘yes’,否则输出‘no’。 样例输入: 3 0 1 2 样例输出:no noyes提示:不能用递归,否则原创 2014-08-24 00:51:39 · 1901 阅读 · 0 评论 -
考研复试机试题(2009)
Problem A:请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3。输入说明:共一组数据,为两个正整数,分别表示a和b(1输出说明:指定范围内的所有完数,每个数占一行。输入样本1 100输出样本628解答:/* * 描述: 机试题A解答原创 2014-08-31 13:16:56 · 2047 阅读 · 0 评论 -
第二大整数
第二大整数问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束。然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来。说明:(1)0表示输入结束,它本身并不计入这组整数中。(2)在这组整数中,既有正数,也可能有负数。(3)这组整数的个数不少于2个。 输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0。原创 2015-04-06 21:58:02 · 1796 阅读 · 1 评论 -
日期之差
日期之差问题描述 已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。输入格式 输入只有一行 YYYY MM DD输出格式 输出只有一行 W数据规模和约定 1599 1 1 1 样例输入2011 11原创 2015-04-06 22:02:22 · 1167 阅读 · 2 评论 -
Java实现任意进制转换
问题:将m进制num转换为n进制 (2 <= m,n <= 62) ? 总体思路是:先将m进制转换为10进制,再将10进制转为n进制。 1、m进制数num转为10进制 从低位到高位按权展开即可。 例如:8进制1356 转为10进制 6*8^0 + 5 * 8^1 + 3 * 8^2 + 1 * 8^3 = 750 2、10进制转为n进制 采用除留取余,逆序排列。 例如:1原创 2017-08-29 17:44:16 · 22939 阅读 · 4 评论 -
几个有意思的算法题
1.题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。原创 2013-11-05 01:11:48 · 31664 阅读 · 82 评论 -
打鱼还是晒网问题
打鱼还是晒网问题 中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。 问题分析:1)计算从1990年1月1日开始至指定日期共有多少天;2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;3)根据余数判断他是在“打鱼”还是在“晒网”; 若余数为1,2,3,则他是在“打鱼原创 2013-11-21 00:27:08 · 4111 阅读 · 0 评论 -
关于日期的常用算法
关于日期的常用算法有很多,但如果掌握了基本的算法,难一点的可以分解为简单的,各个击破。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 评论 -
大数阶乘的实现
当提到计算一个数的阶乘时,也许很多人都能够轻易的解决,但很多人可能会发现,当计算100或200甚至更大的数的阶乘时,发现一般的方法无法实现,因为就拿200来说,200的阶乘的最后结果的位数达375位,一般的数据类型(如int)根本无法存储,那就得采用其他的方法来解决。 说到这里,可能有人已经想到了,没错,这与求任意位数Pi值及大整数运算的思想都是相似的,即:采用数组来存储。原创 2013-10-08 17:17:12 · 5272 阅读 · 0 评论 -
经典算法之不定方程问题
所谓不定方程,是指未知数个数多于方程个数,且对解都有一定的限制。 首先,来看一道经典的数学问题“百钱买鸡”问题。 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买鸡”问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买鸡,问翁、母、雏各几何? 意思是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,要求100文钱买100只鸡,求公鸡、母鸡和小鸡应该各买多原创 2013-10-10 23:34:04 · 2959 阅读 · 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.欧几里得算法 欧几里得算法就是采用辗转相处的方法来求最大公约数,这是计算两个数的最大公约数的传统算法,其思路如下:(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 评论 -
常用算法之进制转换
进制转换在实际的编程中会经常使用,尤其是二进制的数。先看一个可以在16进制内任意转换的算法,实际就是:(1)10进制转为其它进制,使用辗转相除,逆序取余(2)其它进制转为十进制,则按权展开代码:public class Base { /** * 将数转为任意进制 * @param num * @param转载 2013-09-27 00:27:44 · 1444 阅读 · 0 评论 -
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 评论 -
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 评论 -
基础算法思想
算法设计的任务就是:针对一个具体的问题,利用特定的方法和步骤来获取最佳结果。1.编程的灵魂:算法+数据结果 刚开始学编程的人总是会陷入这样的误区,以为学会了一门语言就学会了编程,总会学各种各样的语言。实际上,语言只是一个工具,解决具体的问题必须依赖于算法,而算法从本质上讲是数学方法的表达。通过一定的数学知识来解答。一个好的系统分析师或设计师,或许他们可以不会任何一种语言,但原创 2013-09-29 01:26:29 · 2502 阅读 · 0 评论 -
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 评论 -
喝汽水问题
喝汽水问题问题描述: 1.某学院有m个学生参加南湖春游,休息时喝汽水。南湖商家公告如下: (1) 买一瓶汽水定价1.40元,喝1瓶汽水(不带走)1元。 (2) 为节约资源,规定3个空瓶可换回1瓶汽水,或20个空瓶可换回7瓶汽水。 (3) 为方便顾客,可先借后还。例如:借1瓶汽水,还3个空瓶;或借7瓶汽水,还20个空瓶。 问:m个学生每人喝1瓶汽水(不带走)原创 2013-11-17 14:54:51 · 2837 阅读 · 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,7,-5,9,-12,15},则输出是{-5,-12,1,7,9,15}。要求时间复杂度为O(n),空间复杂度为O(1)思路描述 由于不改变相对顺序,可以参考之前字符串中字符移动的代码,具体实现如下:原创 2017-08-30 23:13:57 · 2373 阅读 · 0 评论