0%

第十届蓝桥杯大赛软件类省赛Java大学B组题解

第十届蓝桥杯大赛软件类省赛Java大学B组题解

试题 A: 组队

本题总分:5 分

答案: 490

数据小,直接暴力写就行,就是五层循环有点丑,无伤大雅😁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int m = 20, n = 5;
int grade[][] = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
grade[i][j] = cin.nextInt();
}
}

int ans = 0;

for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
if (j == i)
continue;
for (int k = 0; k < m; k++) {
if (k == i || k == j)
continue;
for (int p = 0; p < m; p++) {
if (p == i || p == j || p == k)
continue;
for (int q = 0; q < m; q++) {
if (q == i || q == j || q == k || q == p)
continue;
ans = Math.max(ans, grade[i][0] + grade[j][1] + grade[k][2] + grade[p][3] + grade[q][4]);
}
}
}
}
}
System.out.print(ans);

cin.close();
}

}
/*
* 数据
97 90 0 0 0 92 85 96 0 0 0 0 0 0 93 0 0 0 80 86 89 83 97 0 0 82 86 0 0 0 0
0 0 87 90 0 97 96 0 0 0 0 89 0 0 95 99 0 0 0 0 0 96 97 0 0 0 0 93 98 94 91 0
0 0 0 83 87 0 0 0 0 98 97 98 0 0 0 93 86 98 83 99 98 81 93 87 92 96 98 0 0 0
89 92 0 99 96 95 81
*/

试题 B: 不同子串

本题总分:5 分

答案: 100

就是将所有子串都加入到集合中,通过HashMap自动去重来判断有多少不同字串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {

public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String str = cin.next();
int len = str.length();
Set<String> set = new HashSet<String>();
for(int i = 0; i < len; i++) {
for(int j = i; j < len; j++) {
set.add(str.substring(i, j + 1));
}
}
System.out.print(set.size());

cin.close();
}

}
/*
* 数据
0100110001010001
*/

试题 C: 数列求值

本题总分:10 分

答案: 4659

由于只需要后四位,每次对10000取模就行了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a = 1, b = 1, c = 1;
for(int i = 4; i <= 20190324; i++) {
int temp = (a + b + c) % 10000;
a = b; b = c; c = temp;
}
System.out.print(c);
cin.close();
}

}
/*
* 数据

*/

剩下的有空再写。。。