Rook Leetcode Solution အတွက်ရရှိနိုင်သည့် Capture များ


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် ရင်ပြင်
အခင်းအကျင်း

ပြProbleနာဖော်ပြချက်

ဒီပြproblemနာမှာကျွန်တော်တို့ကို a ကိုကိုယ်စားပြုတဲ့ 2-D matrix ကိုပေးထားတယ် စစ်တုရင် နှင့် အဖြူရောင်လူသစ် နှင့်ပေါ်မှာအချို့သောအခြားအပိုင်းပိုင်း။ White's Rook သည်ဇာတ်ကောင်အားကိုယ်စားပြုသည် 'R'။ အဖြူ၏ဂိုဏ်းအုပ်များကိုကိုယ်စားပြုသည် 'B' နှင့်အနက်ရောင်ရဲ့ pawn အဖြစ်ကိုယ်စားပြုနေကြသည် 'p'။ ပြproblemနာကအထက်တွင်ဖော်ပြခဲ့ပြီးသောအခြားအရာများမရှိကြောင်းအာမခံသည်။ ကျွန်ုပ်တို့၏ရည်မှန်းချက်မှာအဖြူရောင်လှောင်အိမ်ဖြင့်ဖမ်းဆီးရမိနိုင်သည့်အနက်ရောင် pawn အရေအတွက် (အထွေထွေစစ်တုရင်စည်းမျဉ်းများကိုထည့်သွင်းစဉ်းစားခြင်း) ကိုရှာဖွေရန်ဖြစ်သည်။

နမူနာ

board = [[".",".",".",".",".",".",".","."],
         [".",".",".","p",".",".",".","."],
         [".",".",".","R",".",".",".","p"],
         [".",".",".",".",".",".",".","."],
         [".",".",".",".",".",".",".","."],
         [".",".",".","p",".",".",".","."],
         [".",".",".",".",".",".",".","."],
         [".",".",".",".",".",".",".","."]]
3
board = [[".",".",".",".",".",".",".","."],
         [".","p","p","p","p","p",".","."],
         [".","p","p","B","p","p",".","."],
         [".","p","B","R","B","p",".","."],
         [".","p","p","B","p","p",".","."],
         [".","p","p","p","p","p",".","."],
         [".",".",".",".",".",".",".","."],
         [".",".",".",".",".",".",".","."]]
0

ရှင်းလင်းချက်

Rook Leetcode Solution အတွက်ရရှိနိုင်သည့် Capture များ

ချဉ်းကပ်နည်း

ပြtheနာအတွက်ချဉ်းကပ်နည်းသည်ပထမနေရာတွင် chessboard 2-D တွင်လူသစ်၏နေရာကိုရှာရန်ဖြစ်သည် အခင်းအကျင်း ပြီးရင်အပေါ်ဘက်၊ ဘယ်၊ ညာ၊ အောက်လမ်းတွေမှာအနက်ရောင် pawn ('p') ကိုရှာနိုင်သလားဆိုတာကိုစမ်းကြည့်နိုင်ပါတယ်။ အမှု၌ကျွန်ုပ်တို့သည်အဆုံးသို့ရောက်ရှိခြင်းသို့မဟုတ်အရောင်တူသောဘိရှော့ကိုမည်သည့် ဦး တည်ချက်ဖြင့်မဆိုတိုက်ခိုက်ခြင်းပြုသည်။

algorithm

  1. mat တစ်ခုလုံးကိုဖြတ်ပြီး R ကိုအက္ခရာတစ်ခုရှာပြီး၎င်းနှင့်၎င်း၏အတန်းနှင့်ကော်လံနံပါတ်ကိုသိမ်းပါ r, c အသီးသီး။
  2. စတငျ cnt ဖမ်းမိနိုင် pawn အရေအတွက်ကသိမ်းဆည်းရန်
  3. ထိပ် ဦး တည်ချက်, အကွာအဝေးစစ်ဆေးပါ: i ∈ (၀၊ ၀၊ ၁):
      • if ဘုတ်အဖွဲ့ [i] [ဂ] == 'p':
        • တိုး cnt, cnt ++
        • ချိုး
      • if ဘုတ်အဖွဲ့ [i] [ဂ] == 'B':
        • ချိုး
  4. ဘယ်၊ ညာနှင့်အောက်လမ်းညွှန်များအတွက်အလားတူပြုလုပ်ပါ
  5. ပြန်လာ cnt

Rook Leetcode Solution အတွက်ရရှိနိုင်သည့် Capture များအကောင်အထည်ဖော်ခြင်း

C ++ အစီအစဉ်

#include <bits/stdc++.h>

using namespace std;

int numRookCaptures(vector<vector<char>>& board)
{
    if(board.empty())
        return 0;
    int n = board.size() , m = board[0].size() , cnt = 0 , r , c;

    for(int i = 0 ; i < n ; i++)
        for(int j = 0 ; j < m ; j++)
        {
            if(board[i][j] == 'R')
            {
                r = i;
                c = j;
                break;
            }
        }


    for(int i = r - 1 ; i >= 0 ; i--)
    {
        if(board[i][c] == 'p')
        {
            cnt++;
            break;
        }
        if(board[i][c] == 'B')
            break;
    }
    for(int i = r + 1 ; i < n ; i++)
    {
        if(board[i][c] == 'p')
        {
            cnt++;
            break;
        }
        if(board[i][c] == 'B')
            break;
    }

    for(int j = c - 1 ; j >= 0 ; j--)
    {
        if(board[r][j] == 'p')
        {
            cnt++;
            break;
        }
        if(board[r][j] == 'B')
            break;
    }

    for(int j = c + 1 ; j < m ; j++)
    {
        if(board[r][j] == 'p')
        {
            cnt++;
            break;
        }
        if(board[r][j] == 'B')
            break;
    }
    return cnt;
}

int main() {
    vector <vector <char> > board = {{'.','.','.','.','.','.','.','.'},
                                    {'.','.','.','p','.','.','.','.'},
                                    {'.','.','.','R','.','.','.','p'},
                                    {'.','.','.','.','.','.','.','.'},
                                    {'.','.','.','.','.','.','.','.'},
                                    {'.','.','.','p','.','.','.','.'},
                                    {'.','.','.','.','.','.','.','.'},
                                    {'.','.','.','.','.','.','.','.'}};


    cout << numRookCaptures(board) << endl;
    return 0;
}

Java အစီအစဉ်

class number_of_rook_captures {

    public static void main(String args[]) {
        char[][] board = {{'.','.','.','.','.','.','.','.'},
                         {'.','.','.','p','.','.','.','.'},
                         {'.','.','.','R','.','.','.','p'},
                         {'.','.','.','.','.','.','.','.'},
                         {'.','.','.','.','.','.','.','.'},
                         {'.','.','.','p','.','.','.','.'},
                         {'.','.','.','.','.','.','.','.'},
                         {'.','.','.','.','.','.','.','.'}};

        System.out.println(numRookCaptures(board));
    }

    public static int numRookCaptures(char [][] board) {
        if(board.length == 0)
            return 0;
        int n = board.length , m = board[0].length , cnt = 0 , r = -1 , c = -1;

        for(int i = 0 ; i < n ; i++)
            for(int j = 0 ; j < m ; j++)
            {
                if(board[i][j] == 'R')
                {
                    r = i;
                    c = j;
                    break;
                }
            }


        for(int i = r - 1 ; i >= 0 ; i--)
        {
            if(board[i][c] == 'p')
            {
                cnt++;
                break;
            }
            if(board[i][c] == 'B')
                break;
        }
        for(int i = r + 1 ; i < n ; i++)
        {
            if(board[i][c] == 'p')
            {
                cnt++;
                break;
            }
            if(board[i][c] == 'B')
                break;
        }

        for(int j = c - 1 ; j >= 0 ; j--)
        {
            if(board[r][j] == 'p')
            {
                cnt++;
                break;
            }
            if(board[r][j] == 'B')
                break;
        }

        for(int j = c + 1 ; j < m ; j++)
        {
            if(board[r][j] == 'p')
            {
                cnt++;
                break;
            }
            if(board[r][j] == 'B')
                break;
        }
        return cnt;
    }
}
3

Rook Leetcode Solution အတွက်ရရှိနိုင်သည့် Capture ၏ရှုပ်ထွေးမှုအားသုံးသပ်ခြင်း

အချိန်ရှုပ်ထွေး

အို (၁)ကျနော်တို့အကြိမ်တစ် ဦး စဉ်ဆက်မပြတ်အရေအတွက်ကကြားမှာအဖြစ်။

အာကာသရှုပ်ထွေးမှု

အို (၁)ကျနော်တို့မသက်ဆိုင်ဘဲမူလ input ကိုသာစဉ်ဆက်မပြတ်မှတ်ဉာဏ်အာကာသကိုသုံးပါအဖြစ်။