北京大学计算概论综合练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目- 求序列中的众数
来源BatmanFly(ZHAO Xin)
描述
输入一个长度为N的整数序列(不多于128个整数),每个整数的范围在[-10^52,10^52],计算这个序列的众数。
众数是指出现次数最多的那个数。
如果有多个数出现的次数都达到最多,则取在原序列最先出现的数为众数;如果所有的数都相等,则返回"no"。
关于输入
第一行为序列长度N。
然后是N个数据,每一个数的范围都是在[-10^52,10^52]。注意,这N个数之间可能有若干个空行隔开。
注意,输入数据可能有一些冗余表达信息,具体来说:
1)正数和0前面可能有前导0和'+'符号,例如
+000123=123
+0000=0
-0000=0
2)每个数字中不含有空格和其他非数字字符,例如不会出现"100 0"或者"- 100"。
3)每个数字前面至多有一个符号,即不会出现+(-1)、-(+4)和-(-1)等情况。
关于输出
输出只有1 行:
该序列的众数或者”no”。
如果有多个数出现的次数都达到最多,则取最先出现的数为众数,并且输出形式应该最简形式。
例如,如果原序列众数为+000123,则输出123;如果原序列众数为+0000或者-0000或者0000,输出0。
负数正常输出,例如:如果原序列众数为-000000001111,就输出-1111。
例子输入
6
-00001
10000
00011111111111111111111111111111111111
-01
+000000011111111111111111111111111111111111
-00000000000001
例子输出
-1
提示
-1出现3次
告诉你们多少次了数组开大点!!!!!By 脸哥
题目- 寻找山顶
描述
在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。
关于输入
第一行是两个整数,表示山地的长m(5≤m≤20)和宽n(5≤n≤20)。
其后m行为一个m×n的整数矩阵,表示每个地块的平均高程。每行的整数间用一个空格分隔。
关于输出
输出所有山顶所在地块的位置。每行一个。按先m值从小到大,再n值从小到大的顺序输出。
例子输入
0 76 81 34 66
1 13 58 4 40 5 24 17 6 65 13 13 76 3 20 8 36 1
2 60 37 42 5
3 87 10 65 42 25 47 41 33 71 69 9
4 24 12 92 11 71 3 82 91 90 20 9
5 44 例子输出
0 2
0 4
2 1
2 4
3 0
3 2
4 3
5 2
5 4
8 0
8 4
9 3
题目- 习题(15-11) 放苹果问题
描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法(用K表示)?注意:5,1,1和1,5,1是同一种分发。
关于输入
第一行是测试数据的数目t(0<= t <= 20),其后的t行均包含两个整数M和N,以空格分开。1<= M, N<= 10
关于输出
对输入的每组数据M和N,用一行输出相应的K
例子输入
1
7 3
例子输出
8
提示
所有不同的摆放方法可以分为两类:至少有一个盘子空着和所有盘子有不空。分别计算着两类摆放方法的数目,然后把它们加起来。对于至少空着一个盘子的情况,这N个盘子摆放M个苹果的摆放方法数目与N-1个盘子摆放M个苹果的摆放方法数目相等。对于所有盘子都不空的情况,这N个盘子摆放M个苹果的摆放方法数目等于N个盘子拜访M-N个苹果的摆放方法数目。采用递归思想解题。
题目- 和为n连续正数序列
描述
输入一个正数n( n <= 30 ),输出所有和为n连续正数序列。
关于输入
一个正数n ( 0 < n <= 30 );
关于输出
输出所有和为n连续正数序列。每个序列里的数字以空格分隔。
如果找不到连续序列,输出NO。
例子输入
15
例子输出
1 2 3 4 5
4 5 6
7 8
提示
注意:序列至少要有两个数字
题目- 例题(15.5) 算24 (1103)
描述
给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。
这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。
比如,对于5,5,5,1,我们知道5 * (5 ? 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。
关于输入
输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。
关于输出
对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。
例子输入
5 5 5 1
1 1 4 2
0 0 0 0
例子输出
YES
NO
提示
2787
题目- 1140 最短前缀
来源2797
描述
一个字符串的前缀是从该字符串的第一个字符起始的一个子串。例如"carbon"的字串是: "c", "ca", "car", "carb", "carbo", 和"carbon"。注意到这里我们不认为空串是字串, 但是每个非空串是它自身的字串. 我们现在希望能用前缀来缩略的表示单词。例如, "carbohydrate" 通常用"carb"来缩略表示. 现在给你一组单词, 要求你找到唯一标识每个单词的最短前缀
在下面的例子中,"carbohydrate" 能被缩略成"carboh", 但是不能被缩略成"carbo" (或其余更短的前缀) 因为已经有一个单词用"carbo"开始
一个精确匹配会覆盖一个前缀匹配,例如,前缀"car"精确匹配单词"car". 因此"car" 是"car"的缩略语是没有二义性的, “car”不会被当成"carriage"或者任何在列表中以"car"开始的单词.
关于输入