汽车之家网站开发方案,平面设计的创意手法有哪些,佛山网站优化怎么做,网络营销岗位招聘信息1. 题目
在一个 8 x 8 的棋盘上#xff0c;有一个白色车#xff08;rook#xff09;。也可能有空方块#xff0c;白色的象#xff08;bishop#xff09;和黑色的卒#xff08;pawn#xff09;。它们分别以字符 “R”#xff0c;“.”#xff0c;“B” 和 “p” 给出…1. 题目
在一个 8 x 8 的棋盘上有一个白色车rook。也可能有空方块白色的象bishop和黑色的卒pawn。它们分别以字符 “R”“.”“B” 和 “p” 给出。大写字符表示白棋小写字符表示黑棋。
车按国际象棋中的规则移动它选择四个基本方向中的一个北东西和南然后朝那个方向移动直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外车不能与其他友方白色象进入同一个方格。
返回车能够在一次移动中捕获到的卒的数量。 提示
board.length board[i].length 8
board[i][j] 可以是 R.B 或 p
只有一个格子上存在 board[i][j] R来源力扣LeetCode 链接https://leetcode-cn.com/problems/available-captures-for-rook 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
class Solution {
public:int numRookCaptures(vectorvectorchar board) {vectorvectorint dir {{1,0},{0,1},{0,-1},{-1,0}};int count 0, x -1, y -1, i, j;for(i 0; i 8; i){for(j 0; j 8; j)if(board[i][j] R){x i, y j;break;}if(x ! -1)//找到车的位置x,ybreak;}for(int k 0; k 4; k){ // 4个方向查找小兵 pi x, j y;while(i0 i8 j0 j8 board[i][j] ! B){ //没有自己人 B 挡着if(board[i][j] p){ //找到小兵 p结束count;break;}i dir[k][0];//在这个方向上移动j dir[k][1];//在这个方向上移动}}return count;}
};