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;
}
相关推荐
像少年啦飞驰点、几秒前
Spring Boot 从入门到实践:快速构建一个 RESTful API 服务
java·spring boot·后端开发·快速入门·restful api·编程小白
编程彩机几秒前
互联网大厂Java面试:从Spring Cloud到Kafka的技术场景深度解析
java·spring cloud·微服务·kafka·技术面试
波波0072 分钟前
每日一题:.NET 中什么是 LOH(大对象堆)?为什么频繁使用大数组或大字符串可能导致性能问题?如何优化?
java·jvm·算法
Gofarlic_OMS2 分钟前
Fluent许可证使用合规性报告自动化生成系统
java·大数据·运维·人工智能·算法·matlab·自动化
熊文豪4 分钟前
Tomcat+cpolar 让 Java Web 应用随时随地可访问
java·前端·tomcat·cpolar
南棱笑笑生5 分钟前
20260123让天启AIO-3576Q38开发板在天启Buildroot下适配摄像头模块8ms1m【预览】
java·前端·数据库·rockchip
大腿不要的腿毛5 分钟前
idea 导入tomcat项目,springMvc项目,static 文件报红,JSP文件include报红
java·tomcat·intellij-idea
星辰_mya6 分钟前
超时未支付订单之分库分表+定时任务+RMQ延时消息
java·架构·rocketmq
Sylvia33.7 分钟前
如何获取足球数据统计数据API
java·前端·python·websocket·数据挖掘
毕设源码-郭学长7 分钟前
【开题答辩全过程】以 基于SSM的河传图书馆座位预约系统的设计和实现为例,包含答辩的问题和答案
java