华子机试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);
}
}
顺丰集团工作强度 411人发布


查看5道真题和解析