百度网站建设优化,南京百度快速排名优化,百度指数排名,哈尔滨建设工程网设计一个算法#xff0c;判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘#xff0c;由字符 #xff0c;“X和O组成#xff0c;其中字符” 代表一个空位。
以下是井字游戏的规则#xff1a;
玩家轮流将字符放入空位#x…设计一个算法判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘由字符 “X和O组成其中字符” 代表一个空位。
以下是井字游戏的规则
玩家轮流将字符放入空位 “中。 第一个玩家总是放字符O”且第二个玩家总是放字符X。 X和O只允许放置在空位中不允许对已放有字符的位置进行填充。 当有N个相同且非空的字符填充任何行、列或对角线时游戏结束对应该字符的玩家获胜。 当所有位置非空时也算为游戏结束。 如果游戏结束玩家不允许再放置字符。 如果游戏存在获胜者就返回该游戏的获胜者使用的字符“X或O”如果游戏以平局结束则返回 “Draw”如果仍会有行动游戏未结束则返回 “Pending”。
示例 1
输入 board [“O X”, XO,“X O”] 输出 “X”
代码
class Solution {public String tictactoe(String[] board) {int nboard.length,blank0;for(int i0;in;i){if(board[i].charAt(0) ){blank;}boolean checktrue;for(int j1;jn;j)//检查每一行if(board[i].charAt(j) ){blank;checkfalse;break;}else if(board[i].charAt(j)!board[i].charAt(0)){checkfalse;break;}if(check) return String.valueOf(board[i].charAt(0));if(board[0].charAt(i) ) {blank;continue;}checktrue;for(int j1;jn;j)//检查每一列if(board[j].charAt(i) ){blank;checkfalse;break;}else if(board[j].charAt(i)!board[0].charAt(i)){checkfalse;break;}if(check) return String.valueOf(board[0].charAt(i));}if(board[0].charAt(0)! ){boolean checktrue;for(int i1;in;i)//检查主对角线{if(board[i].charAt(i)!board[0].charAt(0)){checkfalse;break;}}if(check) return String.valueOf(board[0].charAt(0));}if(board[0].charAt(n-1)! ){boolean checktrue;for(int i1;in;i)//检查副对角线{if(board[i].charAt(n-i-1)!board[0].charAt(n-1)){checkfalse;break;}}if(check) return String.valueOf(board[0].charAt(n-1));}if(blank!0) return Pending;else return Draw;//没有空白的格子}
}