标签:return int res 999 捕获量 board onedirection Leetcode dir
问题描述:在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。
车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能与其他友方(白色)象进入同一个方格。
返回车能够在一次移动中捕获到的卒的数量。
class Solution { public: int onedirection(vector<vector<char>>& board, int i, int j, char dir) {//从(i,j)向dir这个方向出发,寻找p if (dir == 'u') { while (j > 0) { j--; if (board[i][j] == 'p') { return 1; } if (board[i][j] == 'B') { return 0; } } return 0; } if (dir == 'd') { while (j < 7) { j++; if (board[i][j] == 'p') { return 1; } if (board[i][j] == 'B') { return 0; } } return 0; } if (dir == 'l') { while (i > 0) { i--; if (board[i][j] == 'p') { return 1; } if (board[i][j] == 'B') { return 0; } } return 0; } if (dir == 'r') { while (i < 7) { i++; if (board[i][j] == 'p') { return 1; } if (board[i][j] == 'B') { return 0; } } return 0; } return -1;//因为要保证必须有一个return, 否则编译不能通过 } int numRookCaptures(vector<vector<char>>& board) { int res = 0; int i, j; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { if (board[i][j] == 'R') {//寻找R res += onedirection(board, i, j, 'u'); res += onedirection(board, i, j, 'd'); res += onedirection(board, i, j, 'l'); res += onedirection(board, i, j, 'r'); return res; } } } return -1;//因为要保证必须有一个return, 否则编译不能通过 } };
标签:return,int,res,999,捕获量,board,onedirection,Leetcode,dir 来源: https://www.cnblogs.com/airfy/p/12576914.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。