Leetcode车的可用捕获量(每日一题)

Posted 大写的一个帅比

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode车的可用捕获量(每日一题)相关的知识,希望对你有一定的参考价值。

题目链接: 车的可用捕获量


题意:在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。

车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能与其他友方(白色)象进入同一个方格。

返回车能够在一次移动中捕获到的卒的数量。


题解:就是要读懂题目意思。。解释一下就是,找到车的位置,从当前位置向四周找到卒为止。碰到象就停止。

用了非常暴力的方法。。


代码:

 1 class Solution {
 2 public:
 3     int numRookCaptures(vector<vector<char>>& board) {
 4         int posx,posy;
 5         int cnt = 0;
 6         for(int i = 0; i < 8 ;i++){
 7             for(int j = 0; j < 8 ;j++){
 8                 if(board[i][j] == R){
 9                     posx = i;
10                     posy = j;
11                     break;
12                 }
13             }
14         }
15 
16         //
17         for(int i = posx-1; i >= 0; i--){
18             if(board[i][posy] == .) continue;   //空方块
19             else if(board[i][posy] == B) break; //
20             else if(board[i][posy] == p){       //
21                 cnt+=1;
22                 break;
23             }
24         }
25         //
26         for(int i = posx+1; i < 8; i++){
27             if(board[i][posy] == .) continue;   //空方块
28             else if(board[i][posy]== B) break; //
29             else if(board[i][posy] == p){       //
30                 cnt+=1;
31                 break;
32             }
33         }
34         //
35         for(int i = posy-1; i >= 0; i--){
36             if(board[posx][i] == .) continue;   //空方块
37             else if(board[posx][i] == B) break; //
38             else if(board[posx][i] == p){       //
39                 cnt+=1;
40                 break;
41             }
42         }
43         //
44         for(int i = posy+1; i < 8; i++){
45             if(board[posx][i] == .) continue;   //空方块
46             else if(board[posx][i] == B) break; //
47             else if(board[posx][i] == p){       //
48                 cnt+=1;
49                 break;
50             }
51         }
52         return cnt;
53     }
54 };

 

以上是关于Leetcode车的可用捕获量(每日一题)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 999. 车的可用捕获量(Available Captures for Rook)

Leetcode-999 Available Captures for Rook(车的可用捕获量)

车的可用捕获量

车的可用捕获量

LeetCode 1024. 视频拼接(每日一题)

999. 车的可用捕获量