CareerCup 17中等難題 Q17.2 井字遊戲

題目:

設計一個算法,判斷玩家是否贏了井字遊戲。

分析:

就是判斷一個N*N矩陣,是否存在一行,一列,兩對角線上元素全部相等。

package cci.section17;

public class CCI_17_2 {
	
	public static int hasWon(int[][] board){
		int N = board.length;
		//行
		for(int i=0; i<N; i++){
			if(board[i][0] != 0){
				int j;
				for(j=0; j<N; j++){
					if(board[i][j] != board[i][0]) break;
				}
				if(j==N)
					return board[i][0];
			}
		}
		//列
		for(int j=0; j<N; j++){
			if(board[0][j] != 0){
				int i;
				for(i=0; i<N; i++){
					if(board[i][j] != board[0][j]) break;
				}
				if(i==N)
					return board[0][j];
			}
		}
		//正對角
		if(board[0][0] != 0){
			int i;
			for(i=1; i<N; i++){
				if(board[i][i] != board[0][0]) break;
			}
			if(i==N)
				return board[0][0];
		}
		//負對角
		if(board[N-1][0] != 0){
			int i;
			for(i=1; i<N; i++){
				if(board[N-i-1][i] != board[N-1][0]) break;
			}
			if(i==N)
				return board[N-1][0];
		}
		
		return 0;
		
	}

	public static void main(String[] args) {
		//0代表空,1代表白棋,2代表黑棋
		int[][] board = {
						 {1,2,0,1},
						 {1,0,2,0},
						 {1,0,0,2},
						 {1,0,2,0}
						};
		System.out.println(hasWon(board));
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章