> 文档中心 > 蓝桥杯31天冲刺打卡题解(Day3)

蓝桥杯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++本科组第十题

博弈论

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]); }    }}