首页 > 代码库 > codevs 1160 蛇形矩阵x

codevs 1160 蛇形矩阵x

题目描述 Description

小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

输入描述 Input Description

n(即n行n列)

输出描述 Output Description

n+1行,n行为组成的矩阵,最后一行为对角线数字之和

样例输入 Sample Input

3

样例输出 Sample Output

5 4 3
6 1 2
7 8 9
25

数据范围及提示 Data Size & Hint
 

分类标签 Tags 点此展开 

一定要注意 :这道题一开始走的方向是 fx=1 ;

 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5  6 using namespace std; 7  8 int n,lastnum,sum,num=1; 9 int jz[101][101];10 int fx;//代表此时走的方向 11 12 void con(int nx,int ny)13 {14     fx=1;15     memset(jz,0,sizeof(jz));16     jz[nx][ny]=1;17     while(num<lastnum)18     {19         if(fx==0)//向右走 20         {21             nx++;22             jz[nx][ny]=++num;23             if(jz[nx][ny+1]==0)24             {25                 fx=1;//转变为向上走 26             }27         }28         else if(fx==1)//向上走29         {30             ny++;31             jz[nx][ny]=++num;32             if(jz[nx-1][ny]==0)33             {34                 fx=2;//转变为向左走 35             }36         }37         else if(fx==2)//向左走38         {39             nx--;40             jz[nx][ny]=++num;41             if(jz[nx][ny-1]==0)42             {43                 fx=3;//转变为向下走 44             }45         }46         else if(fx==3)//向下走47         {48             ny--;49             jz[nx][ny]=++num;50             if(jz[nx+1][ny]==0)51             {52                 fx=0;//转变为向右走 53             }54         }55     }56 }57 58 int main()59 {60     scanf("%d",&n);61     lastnum=n*n;62     int firstx=(n+1)/2;//因为n一定为奇数 63     int firsty=firstx;64     con(firstx,firsty);65     for(int i=1;i<=n;i++)66     {67         for(int j=1;j<=n;j++)68         {69             cout<<jz[i][j]<<" ";70         }71         cout<<endl;72     }73     for(int i=1;i<=n;i++)74     {75         for(int j=1;j<=n;j++)76         {77             if(i==j) sum+=jz[i][j];//位于对角线上点 点的特征78             if(i+j==n) sum+=jz[i][j];79         }80     }81     cout<<sum;82     return 0;83 }

 

codevs 1160 蛇形矩阵x