程序员面试金典——17.2井字棋

程序员面试金典——17.2井字棋

参考网址:https://www.nowcoder.com/profile/9374962/codeBookDetail?submissionId=16441975
啥是井字棋?怎么着算赢??
看完答案后发现:任意行、列、主对角线或副对角线全部是我方旗子便能获胜啊~
Solution1:针对3*3棋盘的算法

class Board {
public:bool checkWon(vector<vector<int> > board) {// write code hereif (board[0][0] + board[1][1] + board[2][2] == 3) return true;if (board[0][2] + board[1][1] + board[2][0] == 3) return true;for (int i = 0; i < 3; i++) {if (board[i][0] + board[i][1] + board[i][2] == 3) return true;if (board[0][i] + board[1][i] + board[2][i] == 3) return true;}return false;}
};

Solution2:针对n*n棋盘的算法

class Board {
public:bool checkWon(vector<vector<int> > board) {// write code hereint len = board.size();//检查行for (int i = 0; i < len; i++) {int sum = 0;for (int j = 0; j < len; j++)sum += board[i][j];if(sum == len)return true;}//检查列for (int i = 0; i < len; i++) {int sum = 0;for (int j = 0; j < len; j++)sum += board[j][i];if(sum == len)return true;}//检查主对角线int temp = 0;for (int i = 0; i < len; i++) {temp += board[i][i];}if (temp == len) return true;//检查副对角线temp = 0;for (int i = 0; i < len; i++) {temp += board[i][len-i-1];}if (temp == len) return true;return false;}
};


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部