ਰੁਕ ਲੀਟਕੋਡ ਹੱਲ ਲਈ ਉਪਲਬਧ ਕੈਪਚਰ


ਮੁਸ਼ਕਲ ਪੱਧਰ ਸੌਖੀ
ਅਕਸਰ ਪੁੱਛਿਆ ਜਾਂਦਾ ਹੈ Square
ਅਰੇ

ਸਮੱਸਿਆ ਦਾ ਬਿਆਨ

ਇਸ ਸਮੱਸਿਆ ਵਿੱਚ, ਸਾਨੂੰ ਇੱਕ 2-ਡੀ ਮੈਟ੍ਰਿਕਸ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਜੋ a ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਸ਼ਤਰੰਜ ਨਾਲ ਇੱਕ ਚਿੱਟਾ ਕਾਂ ਅਤੇ ਇਸ ਤੇ ਕੁਝ ਹੋਰ ਟੁਕੜੇ. ਵ੍ਹਾਈਟ ਦੇ ਰੁੱਕ ਪਾਤਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਗਿਆ ਹੈ 'ਆਰ'. ਚਿੱਟੇ ਦੇ ਬਿਸ਼ਪ ਦੁਆਰਾ ਪ੍ਰਸਤੁਤ ਕੀਤੇ ਗਏ ਹਨ 'ਬੀ' ਅਤੇ ਕਾਲੇ ਪੈਡਿਆਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ 'ਪੀ'. ਸਮੱਸਿਆ ਗਰੰਟੀ ਦਿੰਦੀ ਹੈ ਕਿ ਉਪਰੋਕਤ ਜ਼ਿਕਰ ਕੀਤੇ ਤੋਂ ਇਲਾਵਾ ਹੋਰ ਕੋਈ ਟੁਕੜਾ ਨਹੀਂ ਹੈ. ਸਾਡਾ ਉਦੇਸ਼ ਸੰਭਵ ਤੌਰ ਤੇ ਕਾਲੇ ਪੰਛੀਆਂ ਦੀ ਸੰਭਾਵਨਾ ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਹੈ ਜੋ ਚਿੱਟੇ ਧੁੰਦ ਦੁਆਰਾ ਇੱਕ ਚਾਲ ਵਿੱਚ ਫੜਿਆ ਜਾ ਸਕਦਾ ਹੈ (ਆਮ ਸ਼ਤਰੰਜ ਦੇ ਨਿਯਮਾਂ ਤੇ ਵਿਚਾਰ ਕਰਦਿਆਂ).

ਉਦਾਹਰਨ

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

ਕਥਾ

ਰੁਕ ਲੀਟਕੋਡ ਹੱਲ ਲਈ ਉਪਲਬਧ ਕੈਪਚਰ

ਪਹੁੰਚ

ਸਮੱਸਿਆ ਲਈ ਪਹੁੰਚ ਪਹਿਲਾਂ ਸ਼ਤਰੰਜ 2-ਡੀ ਵਿਚ ਘੁੰਮਣ ਦੀ ਸਥਿਤੀ ਨੂੰ ਲੱਭਣਾ ਹੈ ਐਰੇ ਅਤੇ ਫਿਰ ਅਸੀਂ ਉਪਰੇ, ਖੱਬੇ, ਸੱਜੇ ਅਤੇ ਹੇਠਾਂ ਦਿਸ਼ਾਵਾਂ ਨੂੰ ਪੜਤਾਲ ਕਰਨ ਲਈ ਦੁਹਰਾ ਸਕਦੇ ਹਾਂ ਕਿ ਕੀ ਸਾਨੂੰ ਕਾਲਾ ਪਿਆ ਪਿਆ ('p') ਮਿਲ ਸਕਦਾ ਹੈ. ਜੇ ਅਸੀਂ ਕਿਸੇ ਵੀ ਦਿਸ਼ਾ ਵਿਚ ਇਕੋ ਰੰਗ ਦੇ ਇਕ ਬਿਸ਼ਪ ਨੂੰ ਅੰਤ 'ਤੇ ਪਹੁੰਚਦੇ ਹਾਂ ਜਾਂ ਹੜਤਾਲ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਉਸ ਦਿਸ਼ਾ ਵਿਚ ਕਿਸੇ ਵੀ ਹੋਰ ਦੀ ਜਾਂਚ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦੇ ਹਾਂ.

ਐਲਗੋਰਿਥਮ

  1. ਇਕ ਅੱਖਰ 'R' ਲੱਭਣ ਲਈ ਪੂਰੇ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਪਾਰ ਕਰੋ ਅਤੇ ਇਸ ਵਿਚਲੇ ਕਤਾਰ ਅਤੇ ਕਾਲਮ ਨੰਬਰ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰੋ r, ਸੀ ਕ੍ਰਮਵਾਰ.
  2. ਸ਼ੁਰੂ ਕਰੋ cnt ਫੜਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ pawns ਦੀ ਗਿਣਤੀ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ
  3. ਚੋਟੀ ਦੀ ਦਿਸ਼ਾ, ਸੀਮਾ ਵਿੱਚ ਜਾਂਚ ਕਰੋ: i ∈ (0, ਆਰ - 1):
      • if ਬੋਰਡ [i] [ਸੀ] == 'ਪੀ':
        • ਵਾਧਾ cnt, ਸੀ ਐਨ ਟੀ ++
        • ਬ੍ਰੇਕ
      • if ਬੋਰਡ [i] [ਸੀ] == 'ਬੀ':
        • ਬ੍ਰੇਕ
  4. ਖੱਬੇ, ਸੱਜੇ ਅਤੇ ਹੇਠਾਂ ਦਿਸ਼ਾਵਾਂ ਲਈ ਵੀ ਅਜਿਹਾ ਕਰੋ
  5. ਵਾਪਸੀ cnt

ਰੁਕ ਲੀਟਕੋਡ ਸਲਿ .ਸ਼ਨ ਲਈ ਉਪਲਬਧ ਕੈਪਚਰਜ਼ ਦੀ ਸਥਾਪਨਾ

ਸੀ ++ ਪ੍ਰੋਗਰਾਮ

#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;
}

ਜਾਵਾ ਪ੍ਰੋਗਰਾਮ

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

ਰੂਕ ਲੀਟਕੋਡ ਸਲਿ .ਸ਼ਨ ਲਈ ਉਪਲਬਧ ਕੈਪਚਰਸ ਦਾ ਗੁੰਝਲਤਾ ਵਿਸ਼ਲੇਸ਼ਣ

ਟਾਈਮ ਜਟਿਲਤਾ

ਓ (1)ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਕਈ ਵਾਰ ਦੁਹਰਾਉਂਦੇ ਹਾਂ.

ਸਪੇਸ ਦੀ ਜਟਿਲਤਾ

ਓ (1)ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਸਿਰਫ ਨਿਰੰਤਰ ਮੈਮੋਰੀ ਸਪੇਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਚਾਹੇ ਇਨਪੁਟ ਦੀ.