カップブルーブリッジ - へリックス行列

学校のトーナメントのタイトル、タイトルは忘れたが、それはおそらく、つまり行、列、スパイラル構造行列の証明の入力:

 

 

 

 

裁判官が拒絶ような考え方は、すべて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 
}

おすすめ

転載: www.cnblogs.com/expedition/p/12207215.html