zoukankan      html  css  js  c++  java
  • 【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 };
  • 相关阅读:
    Subversion 1.5.5 与 Apache 2.2 结合
    IE6 式样表 Bug
    Dreamweaver 禁止自动换行
    错误:Internet Explorer cannot open the Internet site
    Html Agility Pack – XPath 基本语法
    不要安装 CodeSmith 5.2
    控件包含代码块,因此无法修改控件集合
    单例模式
    第一篇博文
    包与导入的概念
  • 原文地址:https://www.cnblogs.com/Asumi/p/12578479.html
Copyright © 2011-2022 走看看