软件大赛集训练习题修订版.docx

上传人:b****8 文档编号:23872312 上传时间:2023-05-21 格式:DOCX 页数:14 大小:25.27KB
下载 相关 举报
软件大赛集训练习题修订版.docx_第1页
第1页 / 共14页
软件大赛集训练习题修订版.docx_第2页
第2页 / 共14页
软件大赛集训练习题修订版.docx_第3页
第3页 / 共14页
软件大赛集训练习题修订版.docx_第4页
第4页 / 共14页
软件大赛集训练习题修订版.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

软件大赛集训练习题修订版.docx

《软件大赛集训练习题修订版.docx》由会员分享,可在线阅读,更多相关《软件大赛集训练习题修订版.docx(14页珍藏版)》请在冰豆网上搜索。

软件大赛集训练习题修订版.docx

软件大赛集训练习题修订版

做每一道题之前,请在心里“大声”默念:

我用什么态度编程序,

就在用什么方式走人生路!

同学们根据自己的实际情况量力而行,选择相应的题目来练习,不能因为题目较多就想一口吃成富老师那样(啊,我是说编程能力,不是体重),特别是低年级同学,编程熟练程度是逐步训练出来的,不是一两个月就能搞定的,欲速则不达,短学期做不完,放假回家接着做,开学后接着做,毕了业接着做(题海无涯苦作舟)。

同学们之间要多交流,“这个题目我是这样做的,你是怎样做的……我的方法有漏洞没有,你的方法有错误没有……”

参加北京决赛的同学重点做以下题目:

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个队,再进行淘汰赛……*/

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1