目录

2020年蓝桥杯Java-B组第二场题目部分个人解析

2020年蓝桥杯Java B组第二场题目+部分个人解析

****#A:门牌制作 624

https://i-blog.csdnimg.cn/blog_migrate/853547e520afb428b269d2f3ee1c3105.png 解一: public static void main(String[] args) { int count=0; for(int i=1;i<=2020;i++) { int n=i; while(n>0) { if(n%10==2) { count++; } n/=10; } } System.out.println(count); } 解二: public static void main(String[] args) {         int cnt=0;         for (int i = 1; i <= 2020; i++) {             String s=i+"";             for (int j = 0; j < s.length(); j++) {                 if(s.charAt(j)==‘2’) cnt++;             }         }         System.out.println(cnt);     }


****#寻找 2020 16520

https://i-blog.csdnimg.cn/blog_migrate/42c1bd4ef79f0d02a391763dcb35442e.png public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); char[][] ch = new char[300][300]; long sum = 0 ; for (int i = 0; i < ch.length; i++) { ch[i] = scanner.nextLine().toCharArray(); } for (int i = 0; i < ch.length; i++) { for (int j = 0; j < ch[0].length; j++) { if (j+3> set = new HashSet<>();     static boolean[] booleans = new boolean[7];     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         ArrayList arr = new ArrayList<>();         for (int i = 0 ; i < 7 ; i++){             booleans[i] = true;             arr.add(i);             set.add(new HashSet<>(arr));             dfs(arr);             booleans[i] = false;             arr.remove(arr.size()-1);         }         System.out.println(set.size());     }     private static void dfs(ArrayList arr) {         set.add(new HashSet<>(arr));         int last = arr.get(arr.size()-1);         for (int i = 0 ; i < list[last].length ; i++){             if (list[last][i] == 1 && !booleans[i]){                 booleans[i] = true;                 arr.add(i);                 dfs(arr);                 booleans[i] = false;                 arr.remove(arr.size()-1);             }         }     } 解二: public static void main(String[] args) { creatGraph(); dfs(1); System.out.println(count); } private static void creatGraph() { arr[1][2] = arr[1][6] = 1; arr[2][1] = arr[2][7] = arr[2][3] = 1; arr[3][2] = arr[3][4] = arr[3][7] = 1; arr[4][3] = arr[4][5] = 1; arr[5][4] = arr[5][6] = arr[5][7] = 1; arr[6][1] = arr[6][5] = arr[6][7] = 1; } private static void dfs(int k) { if (k > 7) { check(); int q = 0; for (int i = 1; i <= 7; i++) { if (v[i] && res[i] == i) { q++; } } if (q == 1) count++; return; } v[k] = true; dfs(k + 1); v[k] = false; dfs(k + 1); } private static void check() { for (int i = 1; i <= 7; i++) { res[i] = i; } for (int i = 1; i <= 7; i++) { for (int j = 1; j <= 7; j++) { if (arr[i][j] != 0 && v[i] && v[j]) { int fx = find(i), fy = find(j); if (fx != fy) { res[fx] = fy; } } } } } private static int find(int p) { if (res[p] == p) { return p; } else { res[p] = find(res[p]); return res[p]; } } 解三: static ArrayList[] list; static HashSet set = new HashSet(); public static void main(String[] args) { init(); for(int i=0; i<7; ++i) { vis[0] = i; set.add(1<(); } list[0].add(1); list[0].add(5); list[1].add(0); list[1].add(6); list[1].add(2); list[2].add(1); list[2].add(3); list[2].add(6); list[3].add(2); list[3].add(4); list[4].add(3); list[4].add(5); list[4].add(6); list[5].add(0); list[5].add(4); list[5].add(6); list[6].add(1); list[6].add(2); list[6].add(4); list[6].add(5); }


****#E:排序 jonmlkihgfedcba

https://i-blog.csdnimg.cn/blog_migrate/b5a300cad5e47a6c2891a737edb97e24.png

-——————————————————————- -——————————————————————-

******#F:成绩分析(**模拟、暴力)

https://i-blog.csdnimg.cn/blog_migrate/19aba1ee7af0f5352c8881401cd56277.png

https://i-blog.csdnimg.cn/blog_migrate/952bd5614ae3d3923d5dec78418edc56.png public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int a,max=0,min=100; double sum=0; for(int i=0;ia) { min=a; } sum+=a; } System.out.println(max); System.out.println(min); System.out.printf("%.2f",sum/n); }


******#G:单词分析(**字符串)

https://i-blog.csdnimg.cn/blog_migrate/df7dda2e0c3e2d136fcde669d7411349.png https://i-blog.csdnimg.cn/blog_migrate/386de60b822578bd356c4d197c8f5811.png public static void main(String[] args) {   Scanner sc=new Scanner(System.in); String str=sc.next(); int[]arr =new int[26]; int a=0;;char ch = ‘a’; for(int i=0;ia) {      a=arr[str.charAt(i)-97];      ch=str.charAt(i);     }else if(arr[str.charAt(i)-97]==a) {      if(ch-str.charAt(i)>0) {      a=arr[str.charAt(i)-97];          ch=str.charAt(i);      }     } } System.out.println(ch); System.out.println(a); }


******#H: 数字三角形(**DP)

https://i-blog.csdnimg.cn/blog_migrate/b285129de3c7beaf652edc3da2263221.png https://i-blog.csdnimg.cn/blog_migrate/d15f5617aef33ba9f0d8cea5c8d833af.png  public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n=scanner.nextInt();         int [][]arr=new int[n+1][n+1];         for (int i = 1; i < arr.length; i++) {             for (int j = 1; j <= i; j++) {                 int s=scanner.nextInt();                 arr[i][j]=s+Math.max(arr[i-1][j-1],arr[i-1][j]);             }         }         System.out.println(n%2==1?arr[n][n/2+1]:Math.max(arr[n][n/2],arr[n][n/2+1]));     } } 解二:   public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n = scanner.nextInt();         //base case : f(1) = a1         int[][] dp = new int[n][n+1];         int temp = scanner.nextInt();         dp[0][0] = temp;         int max = Integer.MIN_VALUE;         for (int i = 2; i <= n; i++) {             for (int j = 0; j < i; j++) {                 temp = scanner.nextInt();                 if (j != 0 && j != (i-1)) {                     dp[i-1][j] = Integer.max(dp[i-2][j-1],dp[i-1][j])+temp;                 }else if (j == 0) {                     dp[i-1][j] = dp[i-2][j]+temp;                 }else {                     dp[i-1][j] = dp[i-2][j-1]+temp;                 }                 if(dp[i-1][j] > max)                     max = dp[i-1][j];             }             dp[i-1][n] = max;             max = Integer.MIN_VALUE;         }         System.out.println(dp[n-1][n]);         scanner.close(); }


******#I:子串分值和(**规律题吧)

https://i-blog.csdnimg.cn/blog_migrate/2e6e339375c8fa6072307ace07545fac.png https://i-blog.csdnimg.cn/blog_migrate/f8b9ec61ab00357473196a566ef49508.png https://i-blog.csdnimg.cn/blog_migrate/8cdca15589d36c80ca17fccaa7054edc.png 解一:  public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int[] arr = new int[26];         long res = 0;         for(int i = 0;i < 26;i++){             arr[i] = -1;         }         String s = sc.nextLine();         String[] str = s.split("");         int willIndex = str.length;         for(int i = 0;i < str.length;i++){             int lastIndex = arr[str[i].charAt(0)-97];             res += (long)(i - lastIndex)*(willIndex - i);             arr[str[i].charAt(0)-97] = i;         }         System.out.println(res);     } 解二: public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         String str = sc.next();         int[] nums = new int[26];         long res = 0;         long n = str.length();         str = “0”+str;         for (int i = 1; i < str.length(); i++) {                         res += (i - nums[str.charAt(i) - ‘a’]) * (n - i+1);                       nums[str.charAt(i) - ‘a’] = i;         }         System.out.println(res);     }


#J: 装饰珠

https://i-blog.csdnimg.cn/blog_migrate/8023801ab4035a1eda7c2388a9dcd60b.png https://i-blog.csdnimg.cn/blog_migrate/eab7ff82cf6080b2c20fbee9f7bbd753.png