この記事では、Javaに出力ループバック番号(スパイラルマトリックス)を実装する方法について説明します。次のように、参照のために共有してください。
私は前にそれを見たことがありますが、私はそれを作っていません。その日、フォーラムに別れを告げましたが、インスピレーションが来ました。とても素晴らしいです
複雑さはo(n)のようです
それを保存します
パッケージデモ;パブリッククラスSnakeMatrixDemo {public static void main(string [] args){int m = 5;/* row*/int n = 5;/* column*/int [] [] [] [] [] [] [] [] [] [m] [n];/* position*//***ポジション構造は次のとおりです。 [0] [0]、[0] [1]、[0] [1]、[0] [2]、[0] [3]、[0] [4] * * [1] [0]、[1] [1]、[1] [2]、[1]、[1] [4] * * * [2] [0]、[2] [2]、[2]、[2]、[2]、 [3] [0]、[3] [1]、[3] [2]、[3] [3] [4] * * [4] [0]、[4] [1]、[4] [2]、[4] [3]、[4] [4] */ int count = 0; int r = 0、c = 0;/* r:line subscript c:列の下付き文字pos [r] [c]は上記の位置に対応します*//*方向、最初のc ++、次にr ++を割り当て、次にc- - を残し、r--*/ final int = 1; final int down = -1; final int left = 2; final int right = -2; int dir = right;/* start direction*/ int cir = 1;/*割り当てのラウンド*/ while(count <m* n){count ++; pos [r] [c] = count;/* assignment*/ switch(dir){case right:if(c <n -cir){/*現在の行の右側にまだ割り当てはありません*/ c ++; } else {dir = down; R ++; } 壊す;ケースダウン:if(r <m -cir){/*現在の列の下にはまだ割り当てがありません*/ r ++; } else {dir = left; c- - ; } 壊す;左のケース:if(c> cir-1){/*現在の行の左側に割り当てはまだありません*/ c--; } else {dir = up; r--; } 壊す;ケースアップ:if(r> cir){/*現在の列に割り当てはありません*/ r--; } else {cir ++;/*円を割り当てます*/ dir = right; C ++; } 壊す; }} system.out.println( "wulin.comテスト結果:"); / * output */ for(int i = 0; i <m; i ++){for(int j = 0; j <n; j ++){if(pos [i] [j] <10){system.out.print(pos [i] [j]+""+""); } else {system.out.print(pos [i] [j] + ""); }} system.out.println(); }}}実行結果:
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。