米哈游筆試大家都做出來幾個(gè)題啊?本菜雞又是1道多只寫出第一題了#米哈游##春招#1.米小游的色盲視角米小游拿到了一個(gè)矩陣,矩陣上每一格有一個(gè)顏色,為紅色(R)、綠色(G)和藍(lán)色(B)這三種顏色的一種。然而米小游是藍(lán)綠色盲,她無法分辨藍(lán)色和綠色,所以在米小游眼里看來,這個(gè)矩陣只有兩種顏色,因?yàn)樗{(lán)色和綠色在她眼里是一種顏色。米小游會(huì)把相同顏色的部分看成是一個(gè)連通塊。請(qǐng)注意,這里的連通塊是上下左右四連通的。由于色盲的原因,米小游知道自己看到的連通塊數(shù)量可能比真實(shí)的連通塊數(shù)量少。你可以幫米小游計(jì)算連通塊少了多少嗎?輸入描述:輸入描述第一行輸入兩個(gè)正整數(shù)n和m,代表矩陣的行數(shù)和列數(shù)。接下來的n行,每行輸入一個(gè)長(zhǎng)度為m的、僅包含' R '、' G '、’B '三種顏色的字符串。代表米小游拿到的矩陣。1<=n,<=1000。思路:遞歸,將上下左右相同的顏色塊找出來標(biāo)記為0,代碼:import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); sc.nextLine(); StringBuilder strs = new StringBuilder(""); while (sc.hasNext()){ strs.append(sc.nextLine()); } String str = new String(strs); int[][] number = new int[n][m]; int[][] numberF = new int[n][m]; int nn = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ char temp = str.charAt(nn); if (temp == 'R'){ number[i][j] = 1; numberF[i][j] = 1; }else if (temp == 'G'){ number[i][j] = 2; numberF[i][j] = 2; }else{ number[i][j] = 3; numberF[i][j] = 2; } nn++; } } int truth= 0; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ if (number[i][j] == 0){ continue; }else{ truth++; solve(number, i, j, n, m, number[i][j]); } } } int fake = 0; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ if (numberF[i][j] == 0){ continue; }else{ fake++; solve(numberF, i, j, n, m, numberF[i][j]); } } } System.out.println(truth - fake); }