47、PHP实现机器人的运动范围

题目: PHP 实现机器人的运动范围

描述:

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。
例如:

当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。

但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?

php 复制代码
<?php

function movingCount($threshold, $rows, $cols)
{
    // write code here
    $q = new SplQueue();
    if($threshold <= 0 || $rows * $cols == 0){
        return 0;
    }
    $q->push([0,0]);
    $v = [];
    $v[0][0] = 1;
    $cnt = 0;
    while(!$q->isEmpty()){
        $t = $q->shift();
        $cnt ++;
        $i=$t[0];
        $j=$t[1];
        if(judge($i,$j+1,$threshold, $rows, $cols, $v)){
            $v[$i][$j+1] = 1;
            $q->push([$i,$j+1]);
        } 
        if(judge($i,$j-1,$threshold, $rows, $cols, $v)){
            $v[$i][$j-1] = 1;
            $q->push([$i,$j-1]);
        }
        if(judge($i+1,$j,$threshold, $rows, $cols, $v)){
            $v[$i+1][$j] = 1;
            $q->push([$i+1,$j]);
        }
        if(judge($i-1,$j,$threshold, $rows, $cols, $v)){
            $v[$i-1][$j] = 1;
            $q->push([$i-1,$j]);
        }
    }
    return $cnt;
}
 
function judge($i, $j, $k, $rows, $cols, &$v){
    if($i >= $rows || $j >=$cols || $i < 0 || $j < 0 || (isset($v[$i]) && isset($v[$i][$j]) && $v[$i][$j] == 1)){
        return false;
    }
    return array_sum(str_split($i)) + array_sum(str_split($j)) <= $k;
}
相关推荐
程序猿零零漆23 分钟前
Spring之旅 - 记录学习 Spring 框架的过程和经验(八)基于Spring的注解应用
java·学习·spring
indexsunny33 分钟前
互联网大厂Java面试实战:从Spring Boot到微服务的逐步深入
java·数据库·spring boot·微服务·kafka·监控·安全认证
小光学长38 分钟前
ssm手工艺品交易平台4xccvou1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring
人道领域1 小时前
【零基础学java】(方法引用)
java·开发语言
路漫聊架构1 小时前
Redis扫描大key利器Scan命令探秘
java·数据库·redis
qq_336313931 小时前
java基础-IO流(打印流)
java·开发语言
万俟淋曦2 小时前
【论文速递】2025年第50周(Dec-07-13)(Robotics/Embodied AI/LLM)
人工智能·深度学习·机器人·大模型·论文·robotics·具身智能
我命由我123452 小时前
Android Jetpack Compose - enableEdgeToEdge 函数、MaterialTheme 函数、remember 函数
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
tkevinjd2 小时前
JavaIO流1
java
J_liaty2 小时前
从入门到实战:Java Socket 实现 TCP/UDP 双协议网络通信系统(带心跳检测)
java·tcp/ip·udp