学校のトーナメントのタイトル、タイトルは忘れたが、それはおそらく、つまり行、列、スパイラル構造行列の証明の入力:
裁判官が拒絶ような考え方は、すべて0を記入し、2次元配列を構築するときに記入する対数螺旋
1から充填の数にX * Yである場合、充填の数<X * Y、連続サイクル、それは、whileループを設定します
これは主に、4サイクルで構成する責任があり、左からの四辺に右、上から下へ、右から左へ、下から塗りつぶしの数とされます
絶えず判断、一方向に移動すると同時に、これらの中でその方向に移動すると、既に非充填郭集[0]、未充填郭シュウ、充填Guoshu端までのサイクル数を埋めるために続けているとき、次のに進みこの方向での充填サイクルの側
各移動の後、数がNUMを埋めるために見つけることができ、ijは裁判官が直接追加した場合、余分なプラスまたはマイナス1、そう、関連するデータを修正してい座標
する#include <stdio.hに> する#include < 文字列・H> INT A [ 100 ] [ 100 ]。INT のmain(){ int型のX、Y。 memset(0、はsizeof ())。 scanf関数(" %D%D "、およびX&Y)。 int型 NUM = 0 ; int型私は= 1、J = 0 ; INTの再= X * Y。// X行Y列ながら(NUM < RE){ 一方(J <= Y &&![I] [J + 1 ]){ [I] [ ++ J = ++ NUM。 } であれば(J> Y) { J - ; num-- 。 } 一方、(I <= X && [I +!1 ] [J]){ [ ++ i]は[J] = ++ NUM。 } もし(I> x)は { I - ; num-- 。 } 一方、(j> = 1 && [I]、[J =!1 ]){ [I] [ --j] = ++ NUM。 } であれば(J < 1 ){ J ++; num-- 。 } 一方、(I> = 1 && [1-!1 ] [J]){ [ --I] [J] = ++ NUM。 } } // 印刷 するための(iは= 1 ; I <= X; I ++ ){ ため(J = 1 ; J <= Y; J ++ ) のprintf(" %dの" 、[I] [J])。 printf(" \ n個" ); } 戻り 0 。 }