Cracking the coding interview--Q19.2

来源:互联网 发布:清华同方录音笔软件 编辑:程序博客网 时间:2024/05/01 15:25

题目

原文:

Design an algorithm to figure out if someone has won in a game of tic-tac-toe.

译文:

设计一个算法判断某人是否赢了“井”字游戏。

解答

若只是要知道一个或少个井字的格局,只要直接遍历判断行列和对角线是否相同,然后返回赢家即可,代码如下:

class Q19_2{public static void main(String[] args){char[][] board = {                              {'x', 'x', 'o'},                              {' ', 'x', 'o'},                              {' ', ' ', 'o'}};                        char result = hasWon(board);          if(result == ' '){              System.out.println("No one won!");          }else{              System.out.println(result + " has won");          }      }public static char hasWon(char[][] board){int type=0;int N=board.length;int i,j;//check each rowfor(i=0;i<N;i++){if(board[i][0]!=' '){for(j=1;j<N;j++){if(board[i][j]!=board[i][j-1]){break;}}if(j==N){return board[i][0];}}}//check each columnfor(j=0;j<N;j++){if(board[0][j]!=' '){for(i=1;i<N;i++){if(board[i][j]!=board[i-1][j]){break;}}if(i==N){return board[0][j];}}}//check diagonalif(board[0][0]!=' '){for(i=1;i<N;i++){if(board[i][i]!=board[i-1][i-1]){break;}}if(i==N){return board[0][0];}}//check diagonalif(board[N-1][0]!=' '){for(i=1;i<N;i++){if(board[N-i-1][i]!=board[N-i][i-1]){break;}}if(i==N){return board[N-i][0];}}return ' ';}}


---EOF---


0 0