この記事では、PHP で右回りの印刷マトリックス (スパイラル マトリックス) を実現する方法を主に紹介し、配列トラバーサルと操作シミュレーション印刷に基づいてスパイラル マトリックス関数を実現するための PHP の関連操作スキルについて説明します。以下
#この記事の例では、PHP で行列を時計回りに出力する方法について説明します。皆さんに共有して参考にしてください。詳細は次のとおりです。#質問行列を入力し、外側から時計回りに出力します。たとえば、次の行列を入力すると、各数値が出力されます:
3 | 4 | ##5 | |
7 | 8 | 9 | |
11 | 12 | 13 | |
15 | 16 | は数値 1、2、3、4、8、12、16、15、14 を出力します。 ,13, 9,5,6,7,11,10. |
解決策は、次のとおり円で印刷することです。ループはうまく制御されます。
単一行、単一列の状況に注意してください。実装コード
<?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 が文字ストリーム内の最初の非反復文字を取得する方法の説明
以上がPHPで右回りの印刷マトリックス(スパイラルマトリックス)を実装する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。