我的個人主頁
我的專欄: 人工智能領域、java-數據結構、Javase、C語言,MySQL,希望能幫助到大家!!! 點贊👍收藏?
1:房間打掃(題目鏈接)
思路:要想要最多的完全干凈的行數,則只需要統計行數中字符串相同的最大數
詳解代碼:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in); // 創建Scanner對象用于讀取輸入int n = sc.nextInt(); // 讀取整數n,表示矩陣的行數(也是列數)String[] str = new String[200]; // 創建字符串數組,最多存儲200行(題目可能保證n≤200)// 循環讀取n行字符串,每行代表矩陣的一行(由0和1組成)for (int i = 0; i < n; i++) {str[i] = sc.next(); // 讀取一行字符串(如"010"表示該行的三個格子狀態)}int num = 0; // 用于記錄最多的完全干凈行數// 遍歷每一行,統計相同模式(或互補模式)的出現次數for (int i = 0; i < n; i++) {if (str[i] == "") { // 如果該行已經被處理過(標記為空字符串),跳過continue;}int tmp = 1; // 初始化當前模式的計數(自身算一次)// 檢查后續行是否與當前行模式相同for (int j = i + 1; j < n; j++) {if (str[i].equals(str[j])) { // 如果模式相同str[j] = ""; // 標記該行已處理,避免后續重復統計tmp++; // 計數加1}}num = Math.max(num, tmp); // 更新最大計數}System.out.println(num); // 輸出最多的完全干凈行數}
}
解法二使用hashMap去重的方法:
import java.util.HashMap;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-02* Time:20:34*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();HashMap<String,Integer> map=new HashMap<>();while(n-->0){String str=sc.next();map.put(str,map.getOrDefault(str,0)+1);}int count=0;for(int x:map.values()){if(count<x){count=x;}}System.out.println(count);}
}
2:項鏈(題目鏈接)
思路:主要是先排序,先找最大的減去最小的,在找第二大的減去第二小的,以此類推就行
詳解代碼:
package TrueTi6_2;import java.util.Arrays;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-02* Time:22:58*/
public class Main1 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int [] arr=new int[n];for(int i=0;i<n;i++){arr[i]=sc.nextInt();}Arrays.sort(arr);int[] dp=new int[n+1];int l=0,r=n-1,p=0;while(l<=r){dp[p++]=arr[l];dp[p++]=arr[r];++l;--r;}int ans=0;dp[n]=arr[0];for(int i=0;i<n;i++){ans+=Math.abs(dp[i]-dp[i+1]);}System.out.println(ans);}
}
3:白給(題目鏈接)
代碼解析:
package TrueTi6_2;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-03* Time:16:54*/
public class Main2 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int x=sc.nextInt();int y=sc.nextInt();int n=sc.nextInt();while(x>=1&&y<=1e9&&n-->0){if(x>=y){int z=x/2;x=x-z;y=y+z;}else{int z=y/2;x=x+z;y=y-z;}}System.out.print(x+" "+y);}
}
4:曼哈頓距離矩陣(題目鏈接)
代碼解析:
package TrueTi6_2;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-03* Time:17:30*/
public class Main3 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int x=sc.nextInt();int y=sc.nextInt();int n=Math.abs(x)+Math.abs(y);int num=0;for(int i=1;i<n;i++){num+=4*i;}if(x>0&&y>=0){num+=x;}else if(x>=0&&y<0){num+=n-y;}else if(x<0&&y<=0){num+=2*n-x;}else if(x<=0&&y>0){num+=3*n+y;}else{num=0;}System.out.println(num);}
}
5:白日夢Ⅰ(題目鏈接)
代碼解析:
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-03* Time:18:00*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] arr=new int[n];for(int i=0;i<n;i++){arr[i]=sc.nextInt();}double maxRate=arr[0]*1.0;double maxProfit=0.0;for(int i=1;i<n;i++){maxRate=Math.max(maxRate,arr[i-1]);maxProfit=Math.max(maxProfit,maxRate/arr[i]);}System.out.println(String.format("%.2f",Math.max(10.00,10.0*maxProfit)));}
}
在這里需要注意的是可以不對換,也就是當n天后小于10美元時候就不進行兌換。
6:甄別情報(題目鏈接)
代碼解析:
package TrueTi6_2;import java.util.HashMap;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-03* Time:22:14*/
public class Main5 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int t=sc.nextInt();for(int i=0;i<t;i++){String x=sc.next();String y=sc.next();HashMap<Character,Character> map=new HashMap<>();boolean correspond=true;if(x.length()!=y.length()||x.length()>100||y.length()>100){continue;}for(int j=0;j<x.length();j++) {char m = x.charAt(j);char n = y.charAt(j);if (map.containsKey(m)) {if (map.get(m) != n) {correspond = false;}} else if (map.containsValue(n)) {correspond = false;} else {map.put(m, n);}}if(correspond){System.out.println("YES");}else{System.out.println("NO");}}sc.close();}
}
7:水往低處流(題目鏈接)
思路:比較當前格子的左,右,上,下。如果比左小,則count++,同理其他方向也一樣。最終我們得到的是被影響才濕潤的格子數量。所以最后用所有的格子數量減去count得到的才是最終結果。
代碼解析:
package TrueTi6_4;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-05* Time:23:00*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[][] arr=new int[n][n];int count=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){arr[i][j]=sc.nextInt();}}for (int i = 0; i <arr.length; i++) {for(int j=0;j< arr.length;j++){if(i>=1&&arr[i][j]<arr[i-1][j]){count++;}else if(i+1<n&&arr[i][j]<arr[i+1][j]){count++;}else if(j>=1&&arr[i][j]<arr[i][j-1]){count++;}else if(j+1<n&&arr[i][j]<arr[i][j+1]){count++;}}}System.out.println(n*n-count);}
}
8:碼哥猜想(題目鏈接)
代碼解析:
package TrueTi6_4;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-06* Time:19:05*/
public class Main1 {public static void main(String[] args) {for(int i=1;i<=100;i++) {int a=i;boolean reacheOne=false;if(i==1){System.out.print(i+" ");}while (a!=1) {if (a % 2 == 0) {a = a / 2;} else {a = a * 5 - 1;}if(a>=1e7){break;}if(a==1){reacheOne=true;break;}}if(reacheOne){System.out.print(i+" ");}}}
}
9:降雨量(題目鏈接)
注意:必須要判斷H水位在哪一天是否小于等于0,如若已經小于等于0了,則將H按0進行接下來的天數計算,不然會有五個案例報錯
代碼解析:
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-06* Time:22:57*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int A=sc.nextInt();int B=sc.nextInt();int H1=sc.nextInt();int H2=sc.nextInt();int H=sc.nextInt();int n=sc.nextInt();int []arr=new int[n];for(int i=0;i<n;i++){arr[i]=sc.nextInt();}boolean isFlood=H>H1;for(int i=0;i<arr.length;i++){if(isFlood){H=H+arr[i]-A-B;}else{H=H+arr[i]-A;}if(H<=0){H=0;}if(isFlood&&H<=H2){isFlood=false;}else if(!isFlood&&H>H1){isFlood=true;}}System.out.println(H);}
}
10:子集統計(題目鏈接)
代碼解析:
package TrueTi6_4;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User:Lenovo* Date:2025-06-07* Time:16:12*/
public class Main3 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String a=sc.next();String b=sc.next();int length=a.length();int number1=Integer.parseInt(a,2);int number2=Integer.parseInt(b,2);int count=0;double pow=Math.pow(2,length);for(int i=0;i<pow;i++){String s=Integer.toBinaryString(i);int a1=Integer.parseInt(s,2);int i1=number1&a1;int i2=a1&number2;if(i1==a1&&i2==number2){count++;}}System.out.println(count);}
}
這次的碼蹄杯真題就分享到這里了;