首页 > 代码库 > Tic Tac Toe
Tic Tac Toe
Problem
N*N matrix is given with input red or black.You can move horizontally, vertically or diagonally. If 3 consecutive samecolor found, that color will get 1 point. So if 4 red are vertically then pointis 2. Find the winner.
Solution
注意检查左上到右下, 右上到左下
1 public static boolean ticTacToe(boolean[][] board) { 2 if(board == null || board.length == 0) return false; 3 4 int m = board.length; 5 int n = board[0].length; 6 7 int red = 0, black = 0; 8 for(int i=0; i<m; i++) { 9 for(int j=0; j<n; j++) {10 if(board[i][j]) {11 if(i<m-2 && board[i+1][j] && board[i+2][j]) red++; //check vertical12 if(j<n-2 && board[i][j+1] && board[i][j+2]) red++; //check horizontal13 if(i<m-2 && j<n-2 && board[i+1][j+1] && board[i+2][j+2]) red++; //check diag14 }15 else {16 if(i<m-2 && !board[i+1][j] && !board[i+2][j]) black++; //check vertical17 if(j<n-2 && !board[i][j+1] && !board[i][j+2]) black++; //check horizontal18 if(i<m-2 && j<n-2 && !board[i+1][j+1] && !board[i+2][j+2]) black++; //check diag19 }20 }21 }22 23 for(int i=m-1; i>=0; i--) {24 for(int j=n-1; j>=0; j--) {25 if(board[i][j]) {26 if(i>=2 && j>=2 && board[i-1][j-1] && board[i-2][j-2]) red++; //check reverse diag27 }28 else {29 if(i>=2 && j>=2 && !board[i-1][j-1] && !board[i-2][j-2]) black++; //check reverse diag30 }31 }32 }33 34 return red > black;35 }
Tic Tac Toe
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。