• 【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 };
  • 相关阅读:
    局部特征点检测 (Local Point Detector)
    算法
    64位编程
    QT开发之mock原理
    C#实现全角字符和半角字符转换
    QTableWidget基本功能总结(转)
    非const引用不能绑定非左值(nolvalue) .
    QTableWidget 应用总结
    QString和string类型相互转换(转)
    XML解析中文字符
  • 原文地址:https://www.cnblogs.com/Asumi/p/12578479.html
Copyright © 2020-2023  润新知