• 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();
            }
        }
    }
  • 相关阅读:
    [算法]统计排序(桶排序)
    [算法]使用bitmap高效进行矩阵运算
    [C++]搞清楚类中构造与析构的顺序
    [C++]关于友元的总结
    [mysql]视图(转)
    [mysql]存储过程(转)
    [C++]对象模型总结
    [mysql]Linux下C语言连接mysql
    [python]使用xml.dom读写XML文件
    Windows 10 64位操作系统 下安装、配置、启动、登录、连接测试oracle 11g
  • 原文地址:https://www.cnblogs.com/csxf/p/3648808.html
Copyright © 2020-2023  润新知