编程马拉松
“编程马拉松”比赛是一个面向全国高校学生、踏入职场2年以内的IT人员的赛事。大赛由牛客网联合北京大学信息技术协会(深圳)、深圳大学城微软学生俱乐部、深圳大学主办,目的是为了寻找最据持久力、最具战斗力的天才GEEK编程高手。
Wang-Junchao
这个作者很懒,什么都没留下…
展开
-
【编程马拉松】【027-最短编辑距离】
UNIX系统下有一个行编辑器ed,它每次只对一行文本做删除一个字符、插入一个字符或替换一个字符三种操作。例如某一行的内容是“ABC”,经过把第二个字符替换成“D”、删除第一个字符、末尾插入一个字符“B”,这三步操作后,内容就变成了“DCB”。即“ABC”变成“DCB”需要经过3步操作,我们称它们的编辑距离为3。现在给你两个任意字符串(不包含空格),请帮忙计算它们的最短编辑距离。原创 2016-07-17 06:24:08 · 2418 阅读 · 0 评论 -
【编程马拉松】【026-是男人就下100层】
相信大家都听说过“是男人就下100层”系列游戏,游戏中包括多个长度和高度各不相同的平台,地面是最低的平台,高度为零,长度无限。一个男人在开始的时候从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当他落到某个平台上时,游戏者选择让他向左或向右跑,跑动的速度也是1米/秒。当他跑到平台的边缘时会继续下落。要求每次下落的高度不能超过MAX米,不然就会摔死,游戏也会结束。请帮忙设计一个程序,计算最快到达地面所用的原创 2016-07-11 07:06:02 · 2899 阅读 · 1 评论 -
【编程马拉松】【025-数字三角形 】
从一个数字三角形的顶部走到底部有很多条不同的路径,规则是只能从当前节点走到下一层相邻的节点,即下一层的左边或右边。例如第三行第二个数字“1”只能走到第四行的第二个数字“7”与第三个数字“4”。请寻找最佳一条路径,使得这条路径上节点的数字总和最大。输入包含多组。每组数据的第一行包含一个正整数n(1≤n≤100),代表三角形的层数。紧接着有n行数字,第i(1≤i≤n)行包含i个自然数。对应每组数据,输出最大的和。原创 2016-07-11 06:44:32 · 2133 阅读 · 1 评论 -
【编程马拉松】【024-放苹果】
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?注意:5、1、1和1、5、1是同一种分法,即顺序无关。输入包含多组数据。每组数据包含两个正整数m和n(1≤m,n≤20)。对应每组数据,输出一个整数k,表示有k种不同的分法。原创 2016-07-09 07:47:30 · 1987 阅读 · 0 评论 -
【编程马拉松】【023-换零钱】
【编程马拉松算法目录】【023-换零钱】【工程下载>>>】1 题目描述 考虑仅用1分、5分、10分、25分和50分这5种硬币支付某一个给定的金额。例如需要支付11分钱,有一个1分和一个10分、一个1分和一个5分、六个1分和一个5分、十一个1分这4种方式。请写一个程序,计算一个给定的金额有几种支付方式。注:假定支付0元有1种方式。1.1 输入描述: 输入包含多组数据。每组数据包含一个正整数n(1≤原创 2016-07-07 11:22:03 · 2095 阅读 · 0 评论 -
【编程马拉松】【022-网页浏览历史】
标准的网页浏览器都提供一个功能:保留最近浏览过页面的历史记录。通过后退或向前按钮就能在历史记录之间跳转。现在,请你模拟这个功能,接收如下三条指令:1. BACK:回退功能,即回退到上一个访问的页面;2. FORWARD:使用BACK返回上一页之后,可以使用FORWARD回到下一页;3. VISIT url:访问指定url的页面,并且所有FORWARD的页面都被清空。标准的网页浏览器都提供一个功能:保留最近浏览过页原创 2016-07-06 07:40:28 · 2179 阅读 · 0 评论 -
【编程马拉松】【021-数据库连接池】
Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。 现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接。输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量。紧接着n行,每行包含一个原创 2016-07-04 06:28:29 · 2496 阅读 · 0 评论 -
【编程马拉松】【020-小世界现象】
小世界现象(又称小世界效应),也称六度分隔理论(英文:Six Degrees of Separation)。假设世界上所有互不相识的人只需要很少中间人就能建立起联系。后来1967年哈佛大学的心理学教授斯坦利•米尔格拉姆根据这概念做过一次连锁信实验,尝试证明平均只需要5个中间人就可以联系任何两个互不相识的美国人。NowCoder最近获得了社交网站Footbook的好友关系资料,请你帮忙分析一下某两个用户之间至少原创 2016-07-03 08:22:31 · 3053 阅读 · 0 评论 -
【编程马拉松】【019-一笔画】
咱们来玩一笔画游戏吧,规则是这样的:有一个连通的图,能否找到一个恰好包含了所有的边,并且没有重复的路径。输入包含多组数据。每组数据的第一行包含两个整数n和m (2≤n, m≤1000),其中n是顶点的个数,m是边的条数。紧接着有m行,每行包含两个整数from和to (1 ≤ from, to ≤ n, from != to),分别代表边的两端顶点。边是双向的,并且两个顶点之间可能不止一条边原创 2016-06-28 06:32:56 · 2752 阅读 · 0 评论 -
【编程马拉松】【018-不喜欢括号】
NowCoder从小就喜欢数学,喜欢在笔记里记录很多表达式。它觉得现在的表达式写法很麻烦,为了提高运算符优先级,不得不添加很多括号,不小心漏了一个右括号的话差之毫厘谬之千里。因此他改用前缀表达式,例如`(2 + 3) * 4`写成`* + 2 3 4`,这样就能避免使用括号了。这样的表达式书写简单,但计算却不够直观。请你写一个程序帮他计算这些前缀表达式吧。输入包含多组数据,每组数据包含两行。第一行为正整数n(原创 2016-06-19 08:23:38 · 2323 阅读 · 2 评论 -
【编程马拉松】【017-Emacs计算器】
Emacs号称神的编辑器,它自带了一个计算器。与其他计算器不同,它是基于后缀表达式的,即运算符在操作数的后面。例如“2 3 +”等价于中缀表达式的“2 + 3”。请你实现一个后缀表达式的计算器。输入包含多组数据。每组数据包括两行:第一行是一个正整数n (3≤n≤50);紧接着第二行包含n个由数值和运算符组成的列表。“+-*/”分别为加减乘除四则运算,其中除法为整除,即“5/3=1”。对应每一组数据,输出它们的运算结果原创 2016-06-19 07:23:34 · 2770 阅读 · 0 评论 -
【编程马拉松】【016-过年回家】
NowCoder今年买了一辆新车,他决定自己开车回家过年。回家过程中要经过n个大小收费站,每个收费站的费用不同,你能帮他计算一下最少需要给多少过路费吗? 输入包含多组数据,每组数据第一行包含两个正整数m(1≤m≤500)和n(1≤n≤30),其中m表示接下来输入的行数,n表示有n个收费站,编号依次为1、2、…、n。出发地的编号为0,终点的编号为n,即需要从0到n。紧接着m行,每行包含三个整数f、t、c,(0≤f,原创 2016-06-19 07:09:07 · 3302 阅读 · 2 评论 -
【编程马拉松】【015-走迷宫】
【编程马拉松算法目录】【015-走迷宫】【工程下载>>>】1 题目描述 NowCoder最喜欢游乐场的迷宫游戏,他和小伙伴们比赛谁先走出迷宫。 现在把迷宫的地图给你,你能帮他算出最快走出迷宫需要多少步吗?1.1 输入描述: 输入包含多组数据。 每组数据包含一个10*10,由“#”和“.”组成的迷宫。其中“#”代表墙;“.”代表通路。 入口在第一行第二列;出口在最后一行第九列。 从原创 2016-06-17 15:06:17 · 2210 阅读 · 0 评论 -
【编程马拉松】【014-红与黑】
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动。 请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入包含多组数据。 每组数据第一行是两个整数 m 和 n(1≤m, n≤20)。紧接着 m 行,每行包括 n 个字符。每个字符表示一块瓷砖的颜色,规则如下: 1. “.”:黑色的瓷砖;原创 2016-06-17 14:50:34 · 2582 阅读 · 1 评论 -
【编程马拉松】【013-最长句子】
英语中,有些单词可以出现在其他单词后面。例如“Love”可以出现在“I”之后,“You”可以出现在“Love”之后,因此它们能构成“I Love You”这句话。现在给你一些单词间的关系,你能计算出最多能有几个单词组合在一起构成一句话吗? 输入包含多组数据。每组数据的第一行包含一个正整数n (1≤n≤10000)。 紧接着n行单词关系,每行包含两个单词A和B,表示单词B能出现在A后原创 2016-06-12 09:20:12 · 2139 阅读 · 0 评论 -
【编程马拉松】【012-Hero】
【编程马拉松算法目录>>>】【011-Hero】【工程下载>>>】1 题目描述 500年前,NowCoder是我国最卓越的剑客。他英俊潇洒,而且机智过人^_^。 突然有一天,NowCoder心爱的公主被魔王困在了一个巨大的迷宫中。NowCoder听说这个消息已经是两天以后了,他知道公主在迷宫中还能坚持T天,他急忙赶到迷宫,开始到处寻找公主的下落。 时间一点一点的过去,NowCoder还是无法找到公原创 2016-06-12 08:15:58 · 1274 阅读 · 0 评论 -
【编程马拉松】【011-鸽兔同校】
浙江大学校园里绿树成荫,环境非常舒适,因此也引来一批动物朋友来此居住。 童心未泯的NowCoder就经常带些碎面包什么的去广场喂鸽子和兔子,并和它们玩耍。 一点也没有大学生的样子,还是一副老不正经的样子,呵呵。 随着鸽子和兔子数目的增多,NowCoder带的那点食物已经不够它们瓜分了。为了能让自己的好朋友吃的饱饱的, NowCoder决定统计一下有多少只鸽子和有多少只兔子,以便带来足够的食原创 2016-06-12 07:39:16 · 1431 阅读 · 0 评论 -
【编程马拉松】【010-杨辉三角】
输入数据包含多组测试。每组测试数 据的输入只有一个正整n(1≤n≤128 ),表示将要输出的杨辉三角层数。 ),表示将要输出的杨辉三角层数。输入以 0结束。对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。原创 2016-06-10 09:40:59 · 2658 阅读 · 1 评论 -
【编程马拉松】【009-数根】
数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根;如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。 比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。现在给你一个正整数原创 2016-06-10 07:22:19 · 3355 阅读 · 0 评论 -
【编程马拉松】【008-快到碗里来】
【编程马拉松算法目录>>>】【008-快到碗里来】【工程下载>>>】1 题目描述 小喵们很喜欢把自己装进容器里的(例如碗),但是要是碗的周长比喵的身长还短,它们就进不去了。现在告诉你它们的身长,和碗的半径,请判断一下能否到碗里去。1.1 输入描述: 输入有多组数据。每组数据包含两个整数n (1≤n≤2^128) 和r (1≤r≤2^128),分别代表喵的身长和碗的半径。圆周率使用3.14。1.2原创 2016-06-08 09:36:01 · 2316 阅读 · 0 评论 -
【编程马拉松】【007-循环数】
142857是一个六位数,我们发现: 142857*1=142857 142857*2=285714 142857*3=428571 142857*4=571428 142857*5=714285 142857*6=857142 即用1到6的整数去乘142857,会得到一个将原来的数首尾相接循环移动若干数字再在某处断开而得到的数字。 也就是说,如果把原来的数字和新的数字都首尾相接,他们原创 2016-06-01 08:01:49 · 4168 阅读 · 0 评论 -
【编程马拉松】【006-统计一】
NewCode总是力争上游,凡事都要拿第一,所以他对“1”这个数情有独钟。爱屋及乌,他也很喜欢包含1的数,例如10、11、12、……。 例如:N=2,1、2出现了1个“1”。N=12,1、2、3、4、5、6、7、8、9、10、11、12。出现了5个“1”。你能帮他统计一下整数里有多少个1吗? 输入有多组数据,每组数据包含一个正整数n,对应每组输入,输出从1到n(包含1和n)之间包含数字1的个数。例如11与10原创 2016-06-01 07:40:25 · 1335 阅读 · 0 评论 -
【编程马拉松】【005-猴子分桃】
老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。 第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。 第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。 后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。原创 2016-05-29 13:08:37 · 1820 阅读 · 0 评论 -
【编程马拉松】【004-包含一】
NowCoder总是力争上游,凡事都要拿第一,所以他对“1”这个数情有独钟。爱屋及乌,他也很喜欢包含1的数,例如10、11、12……。你能帮他统计一下有多少个包含1的正整数。原创 2016-05-29 20:32:01 · 1415 阅读 · 0 评论 -
【编程马拉松】【003-素数和】
【编程马拉松算法目录】【003-素数和】【工程下载>>>】1 题目描述 NowCoder发现某些整数可以拆分成两个不同的素数的和。例如7=2+5、20=3+17=7+13等。 他想知道每个正整数都有几种拆分的方法,你能帮他解决吗?1.1 输入描述: 输入包括多组数据。 每组数据仅有一个整数n (1≤n≤100000)。1.2 输出描述: 对应每个整数,输出其拆成不同素数和的个数,每原创 2016-05-29 11:12:31 · 1418 阅读 · 0 评论 -
【编程马拉松】【002-分遗产】
有一位阿拉伯老人,生前养有11匹马,他去世前立下遗嘱:大儿子、二儿子、小儿子分别继承遗产的1/2、1/4、1/6。 儿子们想来想去没法分:他们所得到的都不是整数,即分别为11/2、11/4、11/6,总不能把一匹马割成几块来分吧? 聪明的邻居牵来了自己的一匹马,对他们说:“你们看,现在有12匹马了,老大得12匹的1/2就是6匹,老二得12匹的1/4就是3匹, 老三得12匹的1/6就是2匹,还剩一匹我照旧牵回家原创 2016-05-28 06:13:49 · 1858 阅读 · 0 评论 -
【编程马拉松】【001-NowCoder猜想】
1 题目描述 nowcoder在家极度无聊,于是找了张纸开始统计素数的个数。设函数f(n)返回从1-n之间素数的个数。nowcoder 发现: f(1) = 0 f(10) = 4 f(100) = 25 … 满足g(m) = 17 * m^2 / 3 - 22 * m /3 + 5/ 3;验证素数个数。原创 2016-05-27 07:30:50 · 1843 阅读 · 0 评论 -
【编程马拉松算法目录】
【编程马拉松算法目录】【所有工程下载>>>】 “奔跑吧,牛客”比赛是一个面向全国高校学生、踏入职场2年以内的IT人员的赛事。大赛由牛客网联合北京大学信息技术协会(深圳)、深圳大学城微软学生俱乐部、深圳大学主办,目的是为了寻找最据持久力、最具战斗力的天才GEEK编程高手。【001-NowCoder猜想】原创 2016-05-27 07:55:45 · 2765 阅读 · 1 评论