软件大赛集训练习题修订版.docx
- 文档编号:23872312
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:14
- 大小:25.27KB
软件大赛集训练习题修订版.docx
《软件大赛集训练习题修订版.docx》由会员分享,可在线阅读,更多相关《软件大赛集训练习题修订版.docx(14页珍藏版)》请在冰豆网上搜索。
软件大赛集训练习题修订版
做每一道题之前,请在心里“大声”默念:
我用什么态度编程序,
就在用什么方式走人生路!
同学们根据自己的实际情况量力而行,选择相应的题目来练习,不能因为题目较多就想一口吃成富老师那样(啊,我是说编程能力,不是体重),特别是低年级同学,编程熟练程度是逐步训练出来的,不是一两个月就能搞定的,欲速则不达,短学期做不完,放假回家接着做,开学后接着做,毕了业接着做(题海无涯苦作舟)。
同学们之间要多交流,“这个题目我是这样做的,你是怎样做的……我的方法有漏洞没有,你的方法有错误没有……”
参加北京决赛的同学重点做以下题目:
1,2,4,14,16,18,19,20,22,23,24,26,28,29,31,32,34,36,37,42,43,46,47,49
刚入门的同学先做以下题目:
10、6、8、12、13、21、30、5、11、25、35、36、40、41
同学们做过的每一道题的程序最好都保留起来:
一则你做的不一定对,以后可能发现其中有错误;二则可以作为“成长日记”,一两年之后你会发现,“咦,我当年写的程序这么好笑!
”;三则可以计算自己累积的编码量,记住:
一个优秀的计算机专业本科生大学四年的编码要求是-—4万行!
/* ACM竞赛的题目算法都比较难,所以代码量可以按3到5倍放大,那也意味着8千行的竞赛代码,大约是100至200道ACM竞赛题,大家可以用做题量作为尺子衡量一下自己。
*/
软件大赛集训练习题
3、输出字符串中不重复的子串。
例如:
“aaab”中,不重复的子串有“a”“aa”“aaa”“aaab”“aab”“ab”“b”。
4、输出两个字符串中的最长公共子串。
例如:
“abcfabcd”和“abcdabce”中最长公共子串为“abcd”。
6、求100!
这个数的末尾有多少个零。
7、求n个数(每个数小于100,n小于20)的最小公倍数。
8、富老师统计缺考人数问题:
学生考试结束之后,富老师将所有交卷的人(多个班在一起)的学号已经排好序放在数组中,请统计有几人缺考。
chara[][5]={“0101”,“0103”,“0104”,“0106”,……,“0201”,“0202”,“0205”,“0206”,……}
学号“0103”表示1班3号,[“0202”,“0205”]表示2班3、4号缺考。
有几个班级不一定,每班的第1号和最后一号(不一定是几号)一定不会缺考。
一个班最多30人,不可能整个班一起缺考。
9、富老师的选择题答案问题:
富老师考试的时候仅出单项选择题,答案在A~D之间,学生的答案存在二维数组中。
chara[][11]={“ABCDCBCDAA”,“BBCDABCDCA”,“ACCDABCDAC”,“CBCDDBBDDB”}
富老师出题太难,学生的成绩不理想,富老师决定修改“标准答案”,使得所有学生都能及格并且平均分尽量高,请问是否存在这样的“标准答案”,如果存在多个,请输出平均分最高的“标准答案”。
10、一维数组中存有奇数和偶数,将奇数在奇数的位置上从大到小排序,将偶数在偶数的位置上“前后翻转”。
例如:
处理前chara[10]={1,8,12,2,5,6,7,10,9,4},
处理后chara[10]={9,4,10,6,7,2,5,12,1,8}
11、n*n二维数组,按对角线从小到大排序。
12、二维数组中,哪一行或哪一列的连续存放的0的个数最多,是几个0。
注意,是“连续”。
13、二维数组中,有些矩形区域中存放的都是0,输出其中最大的矩形区域的“面积”。
14、二维数组中,有些矩形区域中存放的都是0,输出其中最大的区域的“面积”,区域不要求是矩形,可以是不规则的区域(上下左右相连都为0即算在一个区域中)。
计算其中最大的区域的“面积”。
例如:
二维数组包含如下数据:
01011000
01100010
10010001
01010010
则区域的“面积”为12。
15、富老师的集训时间问题:
富老师又要集训了!
(咦,我为什么要说“又”?
)
现在给出富老师的课表(3行7列的二维数组,代表一周的上午下午晚上,0表示没课,1表示有课)和15个学生的课表(3行7列*15的三维数组),选出富老师有时间(学生的课表差异很大,有些学生可能没时间)且有课学生数量最少的k个时间点。
k个时间点按有课学生数量从少到多排序,并且在有课学生数量相同的情况下,上午时间点排在晚上的前面,晚上时间点排在下午的前面。
16、模拟排队问题:
放假了要买火车票回家,有三个售票窗口,人很多,要排队。
每个人买票都要3分钟完成,每个人自动会选择“最优”的队来排,给定n个人到来的时间,放在数组a中,问最后一个人买完票的时刻。
例如:
inta[7]={2,3,4,4,4,5,6}则最后一个人买完票的时刻为11。
17、黑白棋哪个位置翻子最多判定。
18、国际象棋棋盘上放了n个后,一个车想从x1y1位置走到x2y2位置,怎样走不会被后攻击。
19、二维数组中的最大“相似三角形”问题。
例如:
11711
23142
13060
06910
其中的123和369就形成相似三角形(即其中元素等比例)。
输出最大的相似三角形包含的元素个数。
上例中输出3。
20、在上题中,假设三角形要考虑可以旋转的情况。
例如其中的123和426就形成“旋转相似三角形”(即其中元素旋转90度、180度、270度后形成“相似三角形”)。
输出最大的“旋转相似三角形”包含的元素个数。
21、“点阵”
三维数组中存放0~9数字的“点阵”,
例如:
数字1的点阵为6*3的数字
010
110
010
010
010
111
依据此“点阵”,在屏幕上输出“2010”的字样。
22、公共汽车载人问题:
公共汽车全程一费,车的载客量不超过n,汽车途中共有1~k个站,共有m个乘客要在不同的站上车下车,问设计一个载客方案,保证收入最高(就是在不超载的情况下,为了多赚钱,选择一下拒载哪些人)。
m个乘客的上车站和下车站在二维数组中存放。
例如:
inta[][2]={{1,3},{3,4},{4,8},{5,6}}表示第1个乘客在第1站上车,在第3站下车;第2个乘客在第3站上车,在第4站下车……
23、背包问题:
有一个背包,可装重量为w的物品;有n个物品,每个物品重量不同,存在数组a[n]中。
问选择那些物品,可以将背包装的尽量满(不能超过w的最大装载方案。
)
24、富老师折腾水:
富老师有两个桶,可以装3升、5升水,水有无限多,问怎样折腾出4升水,输出折腾过程。
25、富老师跳格游戏:
富老师玩跳格游戏,规则如下:
从起点开始,每次可以向前跳最多k个格,每个格子中有0到n的数字,如果富老师所在的格子中有数字i,则下一次富老师最多跳k+i个格,问富老师最少几次可以跳到终点。
例如:
下图所示的情况,k=3时,富老师最少4次跳到终点。
S
0
0
2
1
0
0
3
0
1
0
0
0
0
E
26、富老师乱跳格游戏:
富老师玩乱跳格游戏,规则如下:
格子是二维的,起点在左上角,终点在右下角,每次只能向右或向下跳,其他和上面一样,问富老师最少几次可以跳到终点。
27、富老师做水槽:
富老师想做一个容积为C的长方体水槽,水槽没有盖,有五块铁板焊接而成,要求每块铁板的长宽都必须为整数,问如何设计水槽的长宽高使得富老师最省钱。
28、富老师的水槽“套娃”:
/*先做第49题再做这个题*/
富老师作了一堆具有各种长宽高的水槽,为了节省空间,富老师想到了“套娃”,富老师让你帮忙算一下,这些水槽最多能套几层。
水槽的长宽高存在数组中,例如:
inta[][2]={{5,6,5},{5,3,3},{3,2,2},{1,1,4},{7,8,9}}
这些水槽最多能套3层。
29、填字游戏:
给定一些单词,例如:
eat,each,every,apply,apple,pop,good……
每个单词长度都大于等于2,是将上述单词填入下面的格中,确定有问号的格子应该填那些字母。
注意格子中的单词之间没有任何空格或标点符号。
e
?
?
?
a
p
?
p
?
e
?
?
o
d
例如:
上述的格子中应该填eachapplegood。
30、富老师儿子的玩具问题:
富老师的儿子有超多的玩具,玩具分为n类,每类最多m个,每个玩具被编上号(1号到k号),那个玩具属于哪一类由数组a[n][m]来确定,例如:
数组a[3][3]={{1,3,6},{2,4,0},{5,7,0}}表示1、3、6号玩具属于第一类,第二类玩具包括2和4号玩具,第三类玩具包括5和7号玩具。
还有一个数组b[n]记录每类玩具玩过之后几天之内不会再玩,例如:
数组b[3]={3,2,2}表示玩过第一类玩具之后,3天之内不会再玩第一类了;玩过第二类玩具之后,2天之内不会再玩第二类了……富老师的儿子每天只玩一个玩具,而且每个玩具玩过之后7天内绝不再玩。
现在给定一个几天内各计划玩那个玩具的序列,判定其是否“合法”。
例如:
序列7,2,3,5,4是个“合法”序列。
序列1,2,5,3,4是个“非法”序列。
更进一步,如果某个序列是“合法”的,试给出下一天可以玩几号玩具。
31、又一个富老师儿子的玩具问题:
/*先做第49题再做这个题*/
由于富老师不能给出一个“合法”玩具序列,所以不得不给儿子买了一个新玩具:
“22世纪高科技新产品”—“积木”。
每个积木的平面形状由一个4*4的数组描述(高度忽略),如下所示:
1110/*B*/
0110
0010
0010
所有n个积木的平面形状由一个n*4*4的三维数组描述。
“22世纪高科技新产品”有新的游戏规则:
A积木块如果要放在B积木块的上面,则要求A积木块的每个组成部分(4*4数组中的1)必须放在B积木块的某个组成部分之上,不许悬空。
例如上述数组是B积木块,而A积木的数组如下:
1111/*A*/
0010
0010
0010
则A积木块无法放在B积木块的上边。
最后的问题是,给定n个积木块的形状,问最多可以搭几层?
注意:
为了搭的更高,每个积木块都可以进行旋转、平移、翻转等操作。
例如:
C积木块如下:
1100
1100
1000
0000
经过翻转、平移之后,C积木块可以放在B积木块之上。
/* 富老师提示:
为了降低难度,可先完成平移功能,成功之后,再增加旋转、翻转等操作。
*/
32、富老师教儿子认星座:
一般的玩具已经搞不定富老师的儿子了,这次他要天上的星星!
?
富老师这样教育儿子:
“哪可不行!
因为……天上的星星……不单卖!
!
必须成套卖,一次卖一个‘星座’,我先教你认识这些星座吧……”
天上所有星星(n个)的坐标(二维的,用(x,y)方式表示)存在a[n][2]数组中,给定一个星座图上的“三角星座”坐标(由三个点组成(x1,y1),(x2,y2),(x3,y3)),问天上的哪三颗星星组成了“三角星座”。
/* 富老师提示:
问题简单点说,其实是要从n个点中找出三个点,它们组成的三角型与星座图上给出的三角型是“相似三角形”就OK。
要注意旋转带来的问题*/
如果是“四边星座”,问题要怎样解?
33、人机猜数游戏
由计算机“想”一个四位数,请人猜这个四位数是多少。
人输入四位数字后,计算机首先判断这四位数字中有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少为止。
例如:
计算机“想”了一个“1234”请人猜,可能的提示如下:
人猜的整数计算机判断有几个数字正确有几个位置正确
112221
334421
331230
412340
124342
123444
游戏结束
请编程实现该游戏。
游戏结束时,显示人猜一个数用了几次。
34、人机猜数游戏
(2)
将以上游戏(33、人机猜数游戏)双方倒一下,请人想一个四位的整数,计算机来猜,人给计算机提示信息,最终看计算机最少用几次猜出一个人“想”的数。
请编程实现。
35、兔子产子
从前有一对长寿兔子,它们每一个月生一对兔子,新生的小兔子两个月就长大了,在第二个月的月底开始生它们的下一代小兔子,这样一代一代生下去,求解兔子增长数量的数列。
如果每对兔子仅会产4对兔子,然后就不再生产,求解兔子增长数量的数列。
如果再加上“每对兔子仅能活12个月”这个条件,求解兔子增长数量的数列。
36、选美比赛
在选美大奖赛的决赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低。
当决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。
例如:
选手序号:
1,2,3,4,5,6,7
选手得分:
5,3,4,7,3,5,6
则输出名次为:
3,1,2,5,1,3,4
请编程帮助大奖赛组委会完成决赛的排名工作。
37、满足特异条件的数列
输入m和n(20>=m>=n>0)求出满足以下方程的正整数数列i1,i2,…,in,使得:
i1+i2+…+in=m,且i1>=i2…>=in。
例如:
当n=4,m=8时,将得到如下5个数列:
5111
4211
3311
3221
2222
38、回文数的形成
任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步聚,则最终可得到一个回文数。
请编程验证。
/*回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证明。
有些回文数要经历上百个步聚才能获得。
*/
39、黑白子交换
有三个白子和三个黑子如下图布置:
○○○.●●●
游戏的目的是用最少的步数将上图中白子和黑子的位置进行交换:
●●●.○○○
游戏的规则是:
(1)一次只能移动一个棋子;
(2)棋子可以向空格中移动,也可以跳过一个对方的棋子进入空格,但不能向后跳,也不能跳过两个子。
请用计算机实现上述游戏。
40、约瑟夫问题
这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:
15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:
30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。
问怎样排法,才能使每次投入大海的都是非教徒。
/*为什么不叫加斯帕问题,而叫约瑟夫问题?
*/
41、邮票组合
富老师有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?
42、可称1~40磅的4块砝码
法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题:
一位商人有一个重40磅的砝码,一天不小心将砝码摔成了四块。
后来商人称得每块的重量都是整磅数,而且发现这四块碎片可以在天平上称1至40磅之间的任意重量。
请问这四块碎片各重多少?
/*注意:
题目中给出的条件是“在天平上”,这意味着:
同一砝码既可以放在天平的左侧,也可以放在天平的右侧。
若规定重物只能放在天平的左侧,则当天平平衡时有:
重物重量+左侧砝码重量总和=右侧砝码重量总和
由此可得:
重物重量=右侧砝码重量总和-左侧砝码重量总和*/
43、波松瓦酒的分酒趣题
法国著名数学家波瓦松在少年时代研究过一个有趣的数学问题:
某人有12品脱的啤酒一瓶,想从中倒出6品脱,但他没有6品脱的容器,仅有一个8品脱和5品脱的容器,怎样倒才能将啤酒分为两个6品脱呢?
/*下面是别人给出的问题分析与算法设计,看看能读懂不。
注意,此题和“24题富老师折腾水”是不一样的。
将12品脱酒8品脱和5品脱的空瓶平分,可以抽象为解不定方程:
8x-5y=6
其意义是:
从12品脱的瓶中向8品脱的瓶中倒x次,并且将5品脱瓶中的酒向12品脱的瓶中倒y次,最后在12品脱的瓶中剩余6品脱的酒。
用a,b,c代表12品脱、8品脱和5品脱的瓶子,求出不定方程的整数解,按照不定方程的意义则倒法为:
a->b->c->a
xy
倒酒的规则如下:
1)按a->b->c->a的顺序;
2)b倒空后才能从a中取
3)c装满后才能向a中倒*/
44、1~9组成三个3位的平方数
将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不允许有重复数字,也不许同其它组的三个数字重复,要求每组中的三位数都组成一个平方数。
例如:
361,529,784。
45、由8个整数形成奇特的立方体
任意给出8个整数,将这8个整数分别放在一个立方体的八个顶点上,要求每个面上的四个数之和相等。
46、减式还原
编写程序求解下式中各字母所代表的数字,不同的字母代表不同的数字。
PEAR
-ARA
——
PEA
答案是:
1098
-989
———
109
47、乘式还原
有乘法算式如下:
○○○
×○○
————
○○○○
○○○○
——————
○○○○○
18个○的位置上全部是素数(1、3、5或7),请还原此算式。
48、魔术师的猜牌术
魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。
对观众说:
我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?
你们就看。
魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手上的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3。
这样依次进行将13张牌全翻出来,准确无误。
问魔术师手中的牌原始顺序是怎样安排的?
答案:
18251031211947613
49、求数组中最长单调递增子序列
inta[10]={1,2,9,5,6,7,8,4,3,10}
上述数组中最长单调递增子序列是:
1,2,5,6,7,8,10。
50、关于世界杯的题目,球迷专用:
世界杯32个球队共进行48场小组赛、8场1/8决赛、4场1/4决赛、2场半决赛、2场决赛共64场比赛,共有64个比赛结果,存在一个a[32][32]的数组中,如下:
-1
1.2
-1
-1
3.0
……
0.4
0
2.1
-1
-1
-1
-1
-1
0.3
-1
……
……
4.0
-1
0
-1
数组中的a[0][1]的值为1.2,表示一号队和二号队的比赛结果是1:
2,很明显,a[1][0]的值一定为2.1。
数组中的a[0][2]的值为-1,表示一号队和三号队没比过。
数组中的a[i][j]的值为0表示两个队踢成0:
0。
假设,任何两个队都没有在比赛过程中遇到过两次(理论上,两个队在小组赛中比过,到淘汰赛中还可能相遇,我们去掉这种情况,因为数组一个元素没法存两个结果)。
请依据a[32][32]数组的值判断:
1)哪个队是冠军、亚军、季军和殿军;2)哪四个队是同一个小组的,共有8个小组呦。
/* 编程的时候,不要真的用32个队,比赛结果不好编。
你可以用16个队分成4个组,每个组出线2个队,再进行淘汰赛……*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 大赛 集训 练习题 修订版
![提示](https://static.bdocx.com/images/bang_tan.gif)