内容发布更新时间 : 2024/11/17 6:28:59星期一 下面是文章的全部内容请认真阅读。
2014年决赛 Java本科A组
1. 结果填空 (满分15分)
标题:海盗分金币
有5个海盗,相约进行一次帆船比赛。
比赛中天气发生突变,他们被冲散了。
恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人。
第一个人在沙滩上发现了一堆金币。他把金币分成5等份。发现刚好少一个金币。他就从自己口袋拿出一个金币补充进去,然后把属于自己的那份拿走。
第二个到达的人也看到了金币,他也和第一个人一样,把所有金币5等分,发现刚好缺少一个金币,于是自己补进去一个,拿走了属于自己的那份。
第三,第四,第五人的情况一模一样。
等他们到了目的地,都说自己的情况,才恍然大悟,一起去荒岛找金币,然而再也没有找到荒岛。他们都惋惜地说:岛上还有一千多枚金币呢!
请你根据这些信息,推算荒岛上最初有多少金币?
这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字等)
2. 结果填空 (满分45分)
标题:六角幻方
把 1 2 3 ... 19 共19个整数排列成六角形状,如下:
* * * * * * * * * * * * * * * * * * *
第 1/10 页
要求每个直线上的数字之和必须相等。共有15条直线哦!
再给点线索吧!我们预先填好了2个数字,第一行的头两个数字是:15 13,参见图【p1.png】,黄色一行为所求。
请你填写出中间一行的5个数字。数字间用空格分开。
这是一行用空格分开的整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字等)
3. 代码填空 (满分30分)
标题:格子放鸡蛋
X星球的母鸡很聪明。它们把蛋直接下在一个 N * N 的格子中,每个格子只能容纳一枚鸡蛋。它们有个习惯,要求:每行,每列,以及每个斜线上都不能有超过2个鸡蛋。如果要满足这些要求,母鸡最多能下多少蛋呢,有多少种摆放方法呢?
下面的程序解决了这个问题,请仔细分析程序逻辑,推断划线处缺少的代码。
public class A { static int max = 0; static int T = 0; static final int N = 6; // 只能在(r,c) 以及其右,其下放置
第 2/10 页
static void f(int[][] da, int r, int c) { if(r>=N){ int n = count(da); if(n>max) { max = n; T = 0; } if(n==max) T++; return; } //计算一下步放哪 int r_next = r; int c_next = c + 1; if(c_next>=N){ c_next = 0; r_next++; } if(____________________){ // 填空位置 da[r][c] = 1; f(da, r_next, c_next); } da[r][c] = 0; f(da, r_next, c_next); }
static int count(int[][] da) { int n = 0; for(int i=0; i static int spy(int[][] da, int r, int c) { int m=0; 第 3/10 页 // 该行 int n=0; for(int i=0; i //该列 n=0; for(int i=0; i public static void main(String[] args) { int[][] da = new int[N][N]; f(da, 0, 0); System.out.println(max); 第 4/10 页 System.out.println(T); } } 注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字或已有符号)。 4. 程序设计(满分30分) 标题:排列序数 如果用a b c d这4个字母组成一个串,有4!=24种,如果把它们排个序,每个串都对应一个序号: abcd 0 abdc 1 acbd 2 acdb 3 adbc 4 adcb 5 bacd 6 badc 7 bcad 8 bcda 9 bdac 10 bdca 11 cabd 12 cadb 13 cbad 14 cbda 15 cdab 16 cdba 17 ... 现在有不多于10个两两不同的小写字母,给出它们组成的串,你能求出该串在所有排列中的序号吗? 【输入格式】 一行,一个串。 【输出格式】 一行,一个整数,表示该串在其字母所有排列生成的串中的序号。注意:最小的序号是0。 第 5/10 页