怎样提高网站权重,中国卫生健康网入口,学做粤菜的网站有哪些,访问网站慢题目#xff1a; PHP 实现机器人的运动范围
描述#xff1a; 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动#xff0c;每一次只能向左#xff0c;右#xff0c;上#xff0c;下四个方向移动一格#xff0c;但是不能进入行坐标和列坐标的数位之和大于k…题目 PHP 实现机器人的运动范围
描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动每一次只能向左右上下四个方向移动一格但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如: 当k为18时机器人能够进入方格35,37因为3537 18。 但是它不能进入方格35,38因为3538 19。请问该机器人能够达到多少个格子
?phpfunction 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,$j1,$threshold, $rows, $cols, $v)){$v[$i][$j1] 1;$q-push([$i,$j1]);} if(judge($i,$j-1,$threshold, $rows, $cols, $v)){$v[$i][$j-1] 1;$q-push([$i,$j-1]);}if(judge($i1,$j,$threshold, $rows, $cols, $v)){$v[$i1][$j] 1;$q-push([$i1,$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;
}