PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
本篇章节讲解PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法。分享给大家供大家参考,具体如下: 回环矩阵指的是一个从一开始,不断按照上、右、下、左顺序依次增大的矩阵序列,例: 现在要求: 输入: m、n,分别代表行数和列数 输出: m * n 的回环矩阵 例: 输入: 输出: 接下来我们用 PHP 来实现,这里我们将其封装成函数调用 第一种思路直接按照上、右、下、左的顺序进行遍历,计算好遍历层数就OK了 = $startY; $d--) { $res[$r-1][$d] = $start; $start += 1; } // 左 for ($l = $r - 1 - 1; $l >= $startX + 1; $l--) { $res[$l][$d+1] = $start; $start += 1; } } // 输出 for ($i = 0; $i < $row; $i++) { for ($j = 0; $j < $col; $j++) { echo $res[$i][$j] . " "; } echo ""; } } snake(7,8); 第二种思路这种思路与第一种思路类似,不过是通过一个 while 全部遍历,然后通过一个标志位 up right down left 来判断与修改当前方向,通过 while 内的 if 来对标志位进行判断,这种就不贴代码了 第三种思路使用一个迭代器来控制方向,然后进行 m * n 次循环,通过判断宽高和 isset 来确定是否转弯,思路很棒,代码量大大减少,表示没有想到这种方式。。 rewind(); list($_x,$_y) = $iterator->current(); $result = []; $result[$x][$y] = $s; for ($i = $s+1; $i < ($s + $w * $h); $i++) { $new_x = $x + $_x; $new_y = $y + $_y; if (0 <= $new_x && 0 <= $new_y && $new_x < $w && $new_y < $h && !isset($result[$new_x][$new_y])) { $result[$new_x][$new_y] = $i; $x = $new_x; $y = $new_y; } else { $iterator->next(); list($_x,$_y) = $iterator->current(); $i--; } } // 打印 for ($i = 0; $i < $h; $i++) { for ($j = 0; $j < $w; $j++) { echo $result[$j][$i],"t"; } echo ""; } } PS:这里再为大家推荐几款在线计算工具供大家参考使用: 在线一元函数(方程)求解计算工具: 科学计算器在线使用_高级计算器在线计算: 在线计算器_标准计算器: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《》 希望本文所述对大家PHP程序设计有所帮助。 (编辑:保山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- PHP实现二维数组按指定的键名排序的方法示例
- mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql
- PHP微信开发之微信录音临时转永久存储
- 孔明灯图片上的文字怎么制作 孔明灯图片上的文字制作教程
- iOS8越狱后没有Cydia怎么办 iOS8越狱后没有Cydia解决办法
- iPhone解锁方式 另类iPhone解锁方式大全
- Yii2.0小部件GridView(两表联查/搜索/分页)功能的实现代码
- PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
- laravel访问public报错是什么原因?怎样处理?
- apple pay安全码是什么 apple pay安全码输入什么