この記事では主に、時計回りの印刷行列 (スパイラル マトリックス) を実現するための PHP の方法を紹介します。これには、配列 トラバーサルに基づく PHP の関連操作スキルと、スパイラル マトリックス関数を実現するための操作シミュレーション印刷が含まれます。次の本の記事を参照してください。
この記事の例では、PHP で行列の時計回りの印刷を実装する方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
質問
行列を入力し、各数値を外側から内側に向かって時計回りに出力します。 たとえば、次の行列を入力したとします。 :
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
10 | 11 | 12 | |
14 | 15 | 16 |
解決策
の方法は、ループをうまく制御する限り、円を描くように印刷することです。 単一行と単一列の状況に注意してください。
実装コード<?php
function printMatrix($matrix)
{
$row = count($matrix);
$col = count($matrix[0]);
if($row == 0 || $col == 0)
return $matrix;
$result = array();
$left = 0;$right = $col-1; $top = 0;$bottom = $row-1;
while($left<=$right && $top<= $bottom){
for($i =$left;$i<=$right;++$i){
array_push($result, $matrix[$top][$i]);
}
for($i =$top+1;$i<=$bottom;++$i)
array_push($result, $matrix[$i][$right]);
if($top!=$bottom){
for($i = $right-1;$i>=$left;--$i)
array_push($result, $matrix[$bottom][$i]);
}
if($left!=$right){
for($i = $bottom-1;$i>$top;--$i)
array_push($result, $matrix[$i][$left]);
}
$left++;$right--;$top++;$bottom--;
}
return $result;
}
関連する推奨事項:
バイナリツリーが対称かどうかを判断するための PHP 実装方法 PHP は 1 行のコードを使用してディレクトリ内のすべてのファイルを削除する例以上がPHPで右回り印刷マトリックス(スパイラルマトリックス)を実装する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。