ホームページ  >  記事  >  バックエンド開発  >  PHPで右回り印刷マトリックス(スパイラルマトリックス)を実装する例

PHPで右回り印刷マトリックス(スパイラルマトリックス)を実装する例

韦小宝
韦小宝オリジナル
2018-01-13 11:54:342028ブラウズ

この記事では主に、時計回りの印刷行列 (スパイラル マトリックス) を実現するための PHP の方法を紹介します。これには、配列 トラバーサルに基づく PHP の関連操作スキルと、スパイラル マトリックス関数を実現するための操作シミュレーション印刷が含まれます。次の本の記事を参照してください。

この記事の例では、PHP で行列の時計回りの印刷を実装する方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです。

質問

行列を入力し、各数値を外側から内側に向​​かって時計回りに出力します。 たとえば、次の行列を入力したとします。 :

910 1112131415 16
1 2 3 4
5 6 7 8
次に、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 は 1 行のコードを使用してディレクトリ内のすべてのファイルを削除する例

以上がPHPで右回り印刷マトリックス(スパイラルマトリックス)を実装する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。