Day3
第一题
第五届2014年蓝桥杯国赛
年龄巧合
C++B组第一题
填空题
暴力枚举每一个年龄相加的结果,再用2014与i相减作比较即可,需要加一个break,否则也会输出表弟的年龄。
public class Main {
public static void main(String[] args) {
for (int i = 1000; i < 2014; i++) {
int age = i / 1000 + i / 100 % 10 + i / 10 % 10 + i % 10;
if (age == 2014 - i) {
System.out.print(i);
break;
}
}
}
}
第二题
第八届2017年蓝桥杯省赛
纸牌三角形
JavaB组第二题
填空题
dfs全排列模板
public class Main {
static final int N = 10;
static int cnt;
static int[] a = new int[N];
static boolean[] used = new boolean[N];
public static void main(String[] args) {
dfs(1);
System.out.println(cnt / 3 / 2); // 去除旋转3种 镜像2种
}
private static void dfs(int u) {
if (u > 9) {
int b1 = a[1] + a[2] + a[3] + a[4];
int b2 = a[4] + a[5] + a[6] + a[7];
int b3 = a[7] + a[8] + a[9] + a[1];
if (b1 == b2 && b2 == b3) cnt++;
return;
} else {
for (int i = 1; i <= 9; i++) { // 全排列模板
if (!used[i]) {
a[u] = i;
used[i] = true;
dfs(u + 1);
used[i] = false;// 回溯 恢复现场
}
}
}
}
}
第三题
第三届2012年蓝桥杯省赛
取球游戏
C++本科组第十题
博弈论
import java.util.Scanner;
public class Main {
static final int N = 10010;
static int[] a = new int[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 1; i < 10000; i++) {
if (a[i] == 0) {
a[i + 1] = 1;
a[i + 3] = 1;
a[i + 7] = 1;
a[i + 8] = 1;
}
}
while (n-- > 0) {
int i = sc.nextInt();
System.out.println(a[i]);
}
}
}
版权声明:本文为weixin_53407527原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。