leetcode surrounded Regions(Java代码)

package com.bupt.acm.leetcode;

public class SurroundedRegions {

    public void solve(char[][] board){
        boolean up,down,left,right;
        for(int i=1;i<board.length-1;i++){
            for(int j=1;j<board[0].length-1;j++){
                up=down=left=right=false;
                if(board[i][j]=='O'){
                    //全是true,表示o可以反转为x
                    up=up(board,i,j);
                    if(!up)
                        continue;
                    down=down(board,i,j);
                    if(!down)
                        continue;
                    left=left(board,i,j);
                    if(!left)
                        continue;
                    right=right(board,i,j);
                    if(!right)
                        continue;
                    board[i][j]='X';
                }
            }
        }
    }
    //按行up:down
    public boolean up(char[][] board,int row,int col){
        if(board[row-1][col]=='O')
            return false;
        return true;
    }
    public boolean down(char[][] board,int row,int col){
        for(int i=row+1;i<board.length;i++){
            if(board[i][col]=='X')
                return true;
        }
        return false;
    }
    //按列 left:right
    public boolean left(char[][] board,int row,int col){
        if(board[row][col-1]=='O'){
            return false;
        }
        return true;
    }
    public boolean right(char[][] board,int row,int col){
        for(int i=col+1;i<board[0].length;i++){
            if(board[row][i]=='X')
                return true;
        }
        return false;
    }
    public static void main(String[] args){
        char[][] board={{'X','X','X'},{'X','O','X'},{'X','X','X'}};
        for(int i=0;i<board.length;i++){
            for(int j=0;j<board.length;j++)
                System.out.print(board[i][j]+" ");
            System.out.println();
        }
        System.out.println("---------------------");
        SurroundedRegions su=new SurroundedRegions();
        su.solve(board);
        for(int i=0;i<board.length;i++){
            for(int j=0;j<board.length;j++)
                System.out.print(board[i][j]+" ");
            System.out.println();
        }
    }
}

 

posted @ 2014-04-06 16:55  曹守鑫  阅读(199)  评论(0编辑  收藏  举报