codevs1160 蛇形矩阵

来源:互联网 发布:罗永浩 支那 知乎 编辑:程序博客网 时间:2024/06/11 10:11
题目描述 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

#include<cstdio>#include<iostream>using namespace std;int n,a[101][101];int main(){    cin>>n;    int k=1,x,y;    x=y=n/2+1;    a[x][y]=k++;    while(x!=n||y!=n)    {        a[x][++y]=k++;        while(x-1+y>=n+1) a[--x][y]=k++;        while(x<=y-1) a[x][--y]=k++;        while(x+y+1<=n+1) a[++x][y]=k++;        while(y+1<=x) a[x][++y]=k++;    }    for(int i=1;i<=n;i++)    {        for(int j=1;j<=n;j++)            cout<<a[i][j]<<" ";        cout<<endl;    }    int ans=0;    for(int i=1; i<=n; i++)        ans+=a[i][i]+a[i][n+1-i];    cout<<ans-1<<endl;    return 0;}


原创粉丝点击