one demo 3 漩渦遞增矩陣

2021-08-14 16:07:18 字數 1179 閱讀 5285

<?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)

//拼出二維陣列

for ($i=0; $i<$num; $i++)

}//初始化變數

$direction = 'r';//r 右 l 左 t 上 b下

$maxnum = $num * $num + $num -1;//計算出最後乙個數

$x = $y = 0;//放的格仔的座標

//迴圈每個數字,放到陣列相應的位置

for ($i=$num; $i<=$maxnum; $i++)

else

else

}if($direction == 'b')

else

}if($direction == 'l')

else

}if($direction == 't')

else

else}}

}$arr[$x][$y] = $i;}}

$table = '';

foreach ($arr as $k => $v)

$table .= '';

}$table .= '';

echo $table;

}jz(15);