#|蓝桥杯31天冲刺打卡题解(Day3)

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++本科组第十题
【#|蓝桥杯31天冲刺打卡题解(Day3)】博弈论
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]); } } }

    推荐阅读