Рубрики
Uncategorized

Проблема с PHP-кодом — D74 999. Доступные захваты для Ладьи

Автор оригинала: David Wong.

Ссылка на Заголовок

999. Доступные захваты для Ладьи

Анализ названия

В шахматах “машина” может перемещать любую сетку по горизонтали или вертикали.

Учитывая двумерный массив, представляющий решетку шахматной доски, прописные буквы представляют белый квадрат, а строчные – черный квадрат. . Представляет собой пустую сетку.

Вернитесь в белую машину только один раз, сколько видов еды.

размышляющий

Сначала найдите белую машину из двумерного массива. Путешествуйте в четырех направлениях.

При путешествии в каждом направлении, когда вы сталкиваетесь. Судите по следующей сетке.

Если вы столкнетесь с одной и той же заглавной буквой, то есть когда вы столкнетесь со своими собственными шахматными фигурами, прекратите движение.

Если вы встретите строчные буквы, вы можете съесть количество шахматных фигур + 1 и прекратить обход.

Так что пройдите четыре направления, и в конечном итоге вернитесь к количеству съедобных шахматных фигур, которые могут быть.

Окончательный код

php
class Solution {

    /**
     * @param String[][] $board
     * @return Integer
     */
    function numRookCaptures($board) {
        // First we need to find R.
        $rowNum = -1;
        $colNum = -1;
        foreach($board as $rowNum => $row){
            $colNum = array_search('R',$row);
            if($colNum !== false){
                break;
            }
        }
        if($colNum===-1){
            return 0;
        }
        $captureable = 0;
        // Find it and search in four directions
        for($j=$colNum-1; $j>=0; $j--){
            if($board[$rowNum][$j] == '.'){
                continue;
            }
            if(strtoupper($board[$rowNum][$j]) == $board[$rowNum][$j]){
                break;
            }
            if(strtolower($board[$rowNum][$j]) == $board[$rowNum][$j]){
                $captureable++;
                break;
            }
        }
        for($j=$colNum+1; $j<8; $j++){
            if($board[$rowNum][$j] == '.'){
                continue;
            }
            if(strtoupper($board[$rowNum][$j]) == $board[$rowNum][$j]){
                break;
            }
            if(strtolower($board[$rowNum][$j]) == $board[$rowNum][$j]){
                $captureable++;
                break;
            }
        }
        for($i=$rowNum+1; $i<8; $i++){
            if($board[$i][$colNum] == '.'){
                continue;
            }
            if(strtoupper($board[$i][$colNum]) == $board[$i][$colNum]){
                break;
            }
            if(strtolower($board[$i][$colNum]) == $board[$i][$colNum]){
                $captureable++;
                break;
            }
        }
        for($i=$rowNum-1; $i>=0; $i--){
            if($board[$i][$colNum] == '.'){
                continue;
            }
            if(strtoupper($board[$i][$colNum]) == $board[$i][$colNum]){
                break;
            }
            if(strtolower($board[$i][$colNum]) == $board[$i][$colNum]){
                $captureable++;
                break;
            }
        }
        return $captureable;
    }
}

Если вы считаете, что эта статья полезна для вас, вы можете использовать Фонд генерации энергии Ии.

Оригинал: “https://developpaper.com/leetcode-php-problem-d74-999-available-captures-for-rook/”