헬리컬 사각형

1897 단어
*                                                                                
*All right reserved.                                                    
*    *                                                                                
*All right reserved.                                                    
*    :    
*  :                                                                                
*    :2014 3 24                                                                    
*   :v1.0                                                                               
*             :      
*    :
#include <iostream>
#include <iomanip>
using namespace std;
void sheng(int (*d)[16],int n);
int main()
{
     int i,j,n,data[16][16];
     cout<<"       :((1~15))"<<endl;
     cin>>n;
     while(1)
     {
      if(n<1||n>15)
      {
          cout<<"     ,     :"<<endl;
          cin>>n;
      }
      else
        break;
     }
     sheng(data,n);
     for(i=1;i<=n;i++)
     {
         for(j=1;j<=n;j++)
            cout<<setw(5)<<data[i][j];
         cout<<endl<<endl;
     }
     return 0;
}
//      
void sheng(int (*d)[16],int n)
{
    int i,j,k,m,number,x,y,direct,count1;
    int offset[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
    //  ,  ,  ,        
    m=(n+1)/2;
    direct=0;
    count1=n-1;
    number=0;
    for(i=1;i<=m;i++,count1-=2)
    {
        x=y=i;
        for(j=0;j<4;j++)
        {
            for(k=0;k<count1;k++)
              {

              d[y][x]=++number;
            x+=offset[direct][0];
            y+=offset[direct][1];
            }
             direct++;
        if(direct==4)
            direct=0;
        }

    }
    if(n%2)
        d[m][m]=n*n;
}

실행 결과:
소감: 어떤 법칙을 알아맞혀 보세요.그 심오함을 느껴라!!!하하

좋은 웹페이지 즐겨찾기