力扣-130.被包围的区域(java,深度优先搜索)

在这里插入图片描述
提交代码:

class Solution {
    
    
    public void solve(char[][] board) {
    
    
        
        int m = board.length,lines = 0;
        if(m != 0){
    
    
            lines = board[0].length;
        }
        
        for (int x = 0; x < m; x++) {
    
    
            dfs(board,x,0);
            dfs(board,x,lines-1);
        }
        for (int y = 0; y <lines; y++){
    
    
            dfs(board,0,y);
            dfs(board,m-1,y);
        }

        for (int i=0;i < m; i++){
    
    
            for (int j =0; j<lines;j++){
    
    
                if (board[i][j]=='A'){
    
    
                    board[i][j] = 'O';
                }else{
    
    
                    board[i][j] ='X';
                }
                
            }
        }

    }

    public static void dfs(char[][] a, int x, int y) {
    
    
        if (x < 0 || x >= a.length || y >= a[0].length|| y < 0 || a[x][y] != 'O') {
    
    
            return;
        }
        a[x][y] = 'A';
        dfs(a, x + 1, y);
        dfs(a,x-1,y);
        dfs(a,x,y+1);
        dfs(a,x,y-1);

    }
}

编译器运行代码:

package LiKou;

import java.util.Scanner;

public class a130围绕的区域 {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        String[] str = new String[1000];
        char[][] board = new char[1000][1000];
        int m = 0, lines = 0;
        while (!(str[m] = input.nextLine()).equals("")) {
    
    
            board[m] = str[m].toCharArray();
            m++;
        }
        lines = str[0].length();
        for (int i = 0; i < m; i++) {
    
    
            dfs(board,i,0);
            dfs(board,i,lines-1);
        }
        for (int i = 0; i <lines; i++){
    
    
            dfs(board,0,i);
            dfs(board,m-1,i);
        }

        for (int i=0;i < m; i++){
    
    
            for (int j =0; j<lines;j++){
    
    
                if (board[i][j]=='A'){
    
    
                    board[i][j] = 'O';
                }else{
    
    
                    board[i][j] ='X';
                }
                System.out.print(board[i][j]);
            }
            System.out.println();
        }
    }

    public static void dfs(char[][] a, int x, int y) {
    
    
        if (x < 0 ||x >=a.length||y>=a[0].length|| y < 0 || a[x][y] != 'O') {
    
    
            return;
        }
        a[x][y] = 'A';
        dfs(a, x + 1, y);
        dfs(a,x-1,y);
        dfs(a,x,y+1);
        dfs(a,x,y-1);

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_46157208/article/details/108088325