[one_demo_3]漩涡递增矩阵

本文详细介绍了如何实现一种特殊的矩阵——漩涡递增矩阵,即数字从中心向外以螺旋形状递增排列。通过算法解析,展示了从1开始填充矩阵的完整过程,适合对算法和数据结构感兴趣的读者。
摘要由CSDN通过智能技术生成
<?php
/**
 * 写一个函数有一个整数的参数(>=3),根据这个整数输出图形
 * n = 3
 * 3     4     5
 * 10   11   6
 * 9     8     7
 * 思路
 * 1,用一个二维数组存放这个矩阵
 * $arr = array(
 * array(0,0,0),
 *  array(0,0,0),
 *  array(0,0,0),
 * );
 * 2,矩阵的数据的变化模拟为上下左右的移动,移动一下加1
 * 移动的算法是数组的下标的变化
 * 向右移动 $y++
 * 向下移动 $x++
 * 向左移动 $y--
 * 向上移动 $x--
 * 3,移动的条件
 * 比如向右移动,
 * a,不能超出数组这个方向的最大坐标,
 * b,下一个位置没有被占用,也就是$arr[x][y]=0。
 * 其他,同理,向左和上是需要考虑最小值大于等于0
 */
function jz($num)
{
if($num < 3)
{
die('must greater than 3');
}
//拼出二维数组
for ($i=0; $i<$num; $i++)
{
for ($j=0; $j<$num; $j++)
{
$arr[$i][$j] = 0;
}
}

//初始化变量
$direction = 'r';//r 右 l 左 t 上 b下
$maxNum = $num * $num + $num -1;//计算出最后一个数
$x = $y = 0;//放的格子的坐标
//循环每个数字,放到数组相应的位置
for ($i=$num; $i<=$maxNum; $i++)
{
if($arr[$x][$y] &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值