华子机试20220330
第一题,只过了80,还有20不知道哪里没能过
import java.util.*; public class Main1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); String[] arr = new String[n]; for(int i = 0; i < n; i++){ arr[i] = in.next(); } int a = 0; int b = 0; for(String s : arr){ if(s.equals("A"))a++; else b++; } int yushu = a % 4; int total = 0; if(yushu != 0){ total = a / 4 + 1 + b; } else total = a / 4 + b; if(total > m){ System.out.println(0); System.out.println(0); } else if(arr[arr.length - 1].equals("B")){ System.out.println(total); System.out.println(1); } else if(arr[arr.length - 1].equals("A")){ int k = yushu; int countB = 0; for(int i = arr.length - 1; i >= 0; i--){ if(arr[i].equals("B")) countB++; else k--; if(k == 0) break; } System.out.println(total - countB); if(yushu == 0) System.out.println(4); else System.out.println(yushu); } } }第二题,A了,不过行列的英文想不起来了用拼音凑活了。。
import java.util.*; public class Main2 { static int min = Integer.MAX_VALUE; static int total = 0; public static void main(String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); int s1 = in.nextInt(); int s2 = in.nextInt(); int e1 = in.nextInt(); int e2 = in.nextInt(); int[][] map = new int[m][n]; map[e1][e2] = 2; int k = in.nextInt(); int lake1 = 0; int lake2 = 0; for(int i = 0; i < k; i++){ lake1 = in.nextInt(); lake2 = in.nextInt(); map[lake1][lake2] = 1; } dfs(map, s1, s2, 0); System.out.println(total + " " + min); } public static void dfs(int[][] map, int hang, int lie, int count){ if(hang < 0 || hang >= map.length || lie < 0 || lie >= map[0].length || map[hang][lie] == 1) return; if(map[hang][lie] == 2){ if(count > min) return; else if(count == min){ total++; return; } else if(count < min){ min = count; total = 1; return; } } count++; map[hang][lie] = 1; dfs(map, hang + 1, lie, count); dfs(map, hang - 1, lie, count); dfs(map, hang, lie + 1, count); dfs(map, hang, lie - 1, count); map[hang][lie] = 0; count--; } }第三题,写的稀烂,只过了70
import java.util.*; public class Main3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); String[] arr = str.substring(1, str.length() - 1).split(","); int flag = 0; for(int i = 0; i < arr.length; i++){ for(int j = i + 1; j < arr.length; j++){ // if(arr[i].equals(arr[j])) equal(arr, i, j); if (equal(arr, i, j) && (j * 2 + 1) < arr.length && !arr[j].equals("null")){ flag = 1; List<String> list = new ArrayList<>(); con(arr, j, list); String ans = "["; for(String s : list){ ans += s; ans += ","; } ans = ans.substring(0, ans.length() - 1); ans += "]"; System.out.println(ans); break; } } if(flag == 1)break; } if(flag == 0) System.out.println(-1); } public static boolean equal(String[] arr, int m, int n){ if(n >= arr.length) return true; if(arr[m].equals(arr[n])){ return equal(arr, m * 2 + 1, n * 2 + 1) && equal(arr, m * 2 + 2, n * 2 + 2); } return false; } public static void con(String[] arr, int j, List<String> list){ if(j >= arr.length){ return; } list.add(arr[j]); con(arr, j * 2 + 1, list); con(arr, j * 2 + 2, list); } }