[英]where should I place the count variable?
編寫一個遞歸方法來計算網格上生物的數量。 生物定義為1的連續集合(水平和垂直連接)。 我設法處理了連接代碼,但是我被困在應該將count變量放置在何處,例如:如果輸入是
0 0 0 0 1
0 1 1 1 0
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
輸出應該是
0 0 0 0 1
0 2 2 2 0
3 0 0 0 0
0 0 0 0 0
0 0 0 0 0
編碼:
public static void clearpic(int[][] a, int row, int col, int SIZE) {
if ((0 <= row) && (row < SIZE) && (0 <= col) && (col < SIZE) && a[row][col] == 1) {
a[row][col] = count;
clearpic(a, row + 1, col, SIZE);
clearpic(a, row, col + 1, SIZE);
clearpic(a, row - 1, col, SIZE);
clearpic(a, row, col - 1, SIZE);
}
}
public static void print(int[][] a, int r, int c) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
clearpic(a, i, j, a.length);
}
count++;
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]);
}
System.out.print("\n");
}
}
您需要將計數作為形式參數傳遞給遞歸函數。
public static void clearpic(int[][] a, int row, int col, int SIZE, int count) {
if ((0 <= row) && (row < SIZE) && (0 <= col) && (col < SIZE) && a[row][col] == 1) {
a[row][col] = count;
clearpic(a, row + 1, col, SIZE, count);
clearpic(a, row, col + 1, SIZE, count);
clearpic(a, row - 1, col, SIZE, count);
clearpic(a, row, col - 1, SIZE, count);
}
}
以下代碼足以滿足您提到的測試用例。
public static void print(int[][] a, int r, int c) {
int count = 1;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
clearpic(a, i, j, a.length, count);
}
count++;
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]);
}
System.out.print("\n");
}
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.