正文

厦门大学2005年第二届程序设计大赛题目2005-06-24 17:35:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/2089.html

分享到:

规则:
1.赛题共五题,参赛者做出的题数将是作品评分的一个重要依据。
2.比赛作品平台不限,语言不限(推荐标准C/C++),程序占用的内存不限(只要不是太离谱),程序运行的时间不限(同样不要太离谱),但是程序编写的质量会对最后的评分有一定的影响.
3.请尽量严格按照输入输出的定义编写输入输出接口,方便多组测试样例的数据测试.当然,如果仅仅输入输出格式有问题而算法正确的程序,也同样可以得分.
4.本次比赛的目的主要是问题的分析解决,程序设计和算法设计能力,故将所有结果直接输出而没有算法分析过程的程序,就算能通过测试样例,将也一样无效.
5.理论上允许参赛者对同一份题目提供多份程序,我们可以从中帮你选出最好的,但是请尽量自行挑选一份最好的提交.请提交的时候尽量将代码整理并注释好,并提交相关设计文档.
6.虽然没有在线测试提交系统,但是由于时间上较为充分,请自行考虑编写各种情况下的测试用例,以提高你程序的准确率.
7.请独自完成,严禁代码重复,严禁相互讨论,尊重对手,也是尊重自己.
8.如对赛题有疑惑可以发邮件至: emoon11@sohu.com 征询许鹏展同学,他将热情地解答你提出的问题。

题目:
1.    取胜之道
Program国度的人,喜欢玩这样一个游戏,在一块板上写着一行数,共n个。两个游戏者,轮流从最右或最左取一个数。刚开始,每个游戏者的得分均为零。如果一个游戏者取下一个数,则将该数的值加到该游戏者的得分上,最后谁的得分最高谁就赢了游戏。给出这n个数( 从左往右), 假设游戏者都是非常聪明的,问最后两个人的得分(假设第一个人首先取数).
输入格式:第一行为n(2<=n<=100),第二行为n个数,每个数字之间均用空格隔开。输出为两个游戏者的得分.第一个数表示第一个游戏者的得分,第二个数为第二个游戏者的得分,两个数字之间用空格隔开。
如输入
6
4 7 2 9 5 2
输出
18 11

2.    分数与小数
将分数转化为小数,相信很多人都会吧.那么,这里给定一个分数N/D,N为分子,D为分母(N,D均为整数),试编程求出N/D的小数形式,当然如果这个小数为无限循环小数,则把循环的部分用括号括起来,接着循环的部分则省略不写。比如:
1/3    =0.(3)
22/5=4.4
1/7    =0.(142857)
2/2    =1.0
3/8    =0.375
45/56    =0.803(571428)
输入为两个正整数N,D(1 <= N,D <= 100000),输出为对应的小数(为了对齐格式,请一行最多输出76个字符)。
样例输入:
1 3
22 5
1 7
对应输出:
0.(3)
4.4
0.(142857)

3.    排名统计
参加任何一项比赛,都会涉及到排名统计问题,由此可见排名统计是多么的重要.这里假设有一项比赛,共有n(1<=n<=200)个人参加,那么请问共有多少种不同的排名(注意:可以很多参赛者在同一个名次,即参赛者名次可以并列)?
数据输入n,输出为不同的排名总数.
如输入
1
2
3
输出为
1
3
13


4.    括号匹配
括号匹配问题在编译器中是个相当重要的问题,我们如下归纳定义规则括号序列:
(1)空序列为规则序列。
(2)若s为一个规则序列,则(s),[s]也为规则序列。
(3)若A,B为规则序列,则AB也为规则序列。
(4)所有的规则序列是由(1),(2),(3)产生的。
如下列的序列都为规则序列
(), [], (()), ([]), ()[], ()[()]
而下面的则不是
(, [, ], )(, ([]), ([()
对于一个给定的由 '(', ')', '[', 和 ']'组成的序列,我们希望通过添加最少的'(', ')', '[', 和 ']'使该序列为一个规则序列。其中,'(', ')', '[', 和 ']'四个符号可以添加到序列的任何位置。
输入由'(', ')', '[', 和 ']'组成的序列,其长度最大为100个字符.输出添加最少括号后找到的规则序列.(注意:结果可能有多组对应的
规则序列,请输出其中的任意一种即可)。
如输入
([(]
输出为
()[()]


5.    布尔表达式
给出两个c语言中的逻辑表达式,判断两个表达式是否完全一样(对变量所有的取值,两个表达式的值一样),表达式中的变量可由字母a-z中的任何一个表示,运算符由'|'(或),'&'(与),'^'(异或),'~'(非)组成,表达式中还可能有圆括号,各运算符的优先级跟c语言一样。
输入每两行一组,分别为两个表达式(长度不大于100).
如果两个表达式一样,则输出Equivalent,否则输出Different
如输入
a^b&(b|a)
(a^(b&(b|a)))
a ^b&(b|a)
~b^a
输出为
Equivalent
Different


阅读(6629) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册