中级农民
- 积分
- 203
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2018-8-2
- 最后登录
- 1970-1-1
|
- import java.io.*;
- import java.util.*;
- class Solution {
- int[] dx = {0, 0, 1, -1};
- int[] dy = {1, -1, 0, 0};
-
- public boolean isCaptured(int x, int y, char[][] board) {
- if(x < 0 && y < 0 && x >= board.length && y >= board[0].length) {
- return false;
- }
- if(board[x][y] != 'O') {
- return false;
- }
- // copy original data so that keep original board unchanged
- char[][] copy = new char[board.length][board[0].length];
- for(int i = 0; i < board.length; i++) {
- for(int j = 0; j < board[0].length; j++) {
- copy[i][j] = board[i][j];
- }
- }
- return helper(x, y, copy);
- }
- private boolean helper(int x, int y, char[][] board) {
- if(x < 0 || y < 0 || x >= board.length || y >= board[0].length) {
- return false;
- }
- if(board[x][y] =='X') {
- return true;
- }
- board[x][y] = 'X';
- boolean isCaptured = true;
- for(int i = 0; i < 4; i++) {
- isCaptured &= helper(x + dx[i], y + dy[i], board);
- }
- return isCaptured;
- }
- public static void main(String[] args) {
- Solution s = new Solution();
- char[][] board = {
- {'.', '.', 'X', 'X', '.'},
- {'.', 'X', 'O', 'O', 'X'},
- {'.', 'O', 'X', 'O', 'X'},
- {'X', 'X', 'O', 'X', 'O'},
- {'.', '.', 'X', 'X', 'O'}};
- char[][] board2 = {
- {'.', '.', 'X', 'X', '.'},
- {'.', 'X', '.', 'O', 'X'},
- {'X', '.', 'O', '.', 'X'},
- {'X', 'X', '.', 'X', '.'},
- {'.', '.', 'X', '.', '.'}};
- for(int i = 0; i < board.length; i++) {
- for(int j = 0; j < board[0].length; j++) {
- System.out.print(s.isCaptured(i, j, board2) + ", ");
- }
- System.out.println();
- }
- }
- }
复制代码
DFS还要修改棋盘,感觉没BFS好 |
|