加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
lei.php 1.65 KB
一键复制 编辑 原始数据 按行查看 历史
杨威利de红茶 提交于 2024-04-30 11:12 . 添加【面试经典100题】
<?php
$num = 9;
$leiNum = 10;
$map = initMap($num, $leiNum);
foreach ($map as $line) {
echo join(', ', $line) . PHP_EOL;
}
function initMap($num, $leiNum) {
$map = array_fill(0, $num, array_fill(0, $num, 0));
$cache = [];
for ($i = 0; $i < $leiNum; $i++) {
while (true) {
$x = random_int(0, $num - 1);
$y = random_int(0, $num - 1);
if (isset($cache[$x][$y])) {
continue;
}
// 缓存
$cache[$x][$y] = true;
break;
}
$map[$x][$y] = -1;
// 设置周围的数字加一
_setNum($map, $x, $y, $num);
}
return $map;
}
function _setNum(&$map, $x, $y, $num) {
$flag1 = $x - 1 >= 0;
$flag2 = $y - 1 >= 0;
$flag3 = $x + 1 < $num;
$flag4 = $y + 1 < $num;
// 上
if ($flag1 && $map[$x - 1][$y] >= 0) {
$map[$x - 1][$y]++;
}
// 左
if ($flag2 && $map[$x][$y - 1] >= 0) {
$map[$x][$y - 1]++;
}
// 下
if ($flag3 && $map[$x + 1][$y] >= 0) {
$map[$x + 1][$y]++;
}
// 右
if ($flag4 && $map[$x][$y + 1] >= 0) {
$map[$x][$y + 1]++;
}
// 左上
if ($flag1 && $flag2 && $map[$x - 1][$y - 1] >= 0) {
$map[$x - 1][$y - 1]++;
}
// 右上
if ($flag1 && $flag4 && $map[$x - 1][$y + 1] >= 0) {
$map[$x - 1][$y + 1]++;
}
// 左下
if ($flag3 && $flag2 && $map[$x + 1][$y - 1] >= 0) {
$map[$x + 1][$y - 1]++;
}
// 右下
if ($flag3 && $flag4 && $map[$x + 1][$y + 1] >= 0) {
$map[$x + 1][$y + 1]++;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化