簡體   English   中英

我應該在哪里放置count變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM