diff --git "a/problems/kamacoder/0106.\345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" "b/problems/kamacoder/0106.\345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" index 3708715a4b..ef1e8d63ff 100644 --- "a/problems/kamacoder/0106.\345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" +++ "b/problems/kamacoder/0106.\345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" @@ -160,6 +160,7 @@ int main() { ## 其他语言版本 ### Java +解法一 ```Java import java.util.*; @@ -215,6 +216,48 @@ public class Main { } } ``` +解法二 +```java +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + int m = sc.nextInt(); + + int[][] grid = new int[n][m]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + grid[i][j] = sc.nextInt(); + } + } + + int sum = 0; // 陆地数量 + int cover = 0; // 相邻陆地对数(仅统计上边和左边) + + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (grid[i][j] == 1) { + sum++; // 统计陆地总数 + // 检查上方是否有陆地 + if (i - 1 >= 0 && grid[i - 1][j] == 1) { + cover++; + } + // 检查左方是否有陆地 + if (j - 1 >= 0 && grid[i][j - 1] == 1) { + cover++; + } + // 不检查下方和右方,避免重复计算 + } + } + } + + System.out.println(sum * 4 - cover * 2); + sc.close(); + } +} +``` ### Python