模拟 蛇形矩阵

原创 2016年08月30日 14:06:43

题目链接:http://codevs.cn/problem/1160/


题目描述:

题目描述 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

 题目分析:

纯模拟


Ac代码:

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
int map[105][105],n,sum,num,step,x,y;
int main()
{
    cin>>n;
    x=(n+1)/2;
    y=(n+1)/2;
    map[x][y]=1;
    num=1;
    step=1;
    while(num<=n*n)
    {
        if(num>=n*n)
                break;
        for(int i=1;i<=step;i++)
        {
            map[x][y+i]=map[x][y+i-1]+1;
            num++;
            if(num>=n*n)
                break;
        }
        x=x;
        y=y+step;
        for(int i=1;i<=step;i++)
        {
            map[x-i][y]=map[x-i+1][y]+1;
            num++;
            if(num>=n*n)
                break;
        }
        x=x-step;
        y=y;
        step++;
        for(int i=1;i<=step;i++)
        {
            map[x][y-i]=map[x][y-i+1]+1;
            num++;
            if(num>=n*n)
                break;
        }
        x=x;
        y=y-step;
        for(int i=1;i<=step;i++)
        {
            map[x+i][y]=map[x+i-1][y]+1;
            num++;
            if(num>=n*n)
                break;
        }
        x=x+step;
        y=y;
        step++;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            {
                cout<<map[i][j];
                if(j!=n)
                    cout<<" ";
            }
        cout<<endl;
    }
    sum=0;
    for(int i=1;i<=n;i++)
        sum+=map[i][i];
    for(int i=1;i<=n;i++)
        sum+=map[i][n-i+1];
    sum-=map[(n+1)/2][(n+1)/2];
    cout<<sum<<endl;
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

蛇形矩阵(完全)

画 n阶蛇形方阵 比如如图是5阶方阵(5条对角线) 1 2 6 7 15 3 5 8 14 16 4 9 13 17...
  • why850901938
  • why850901938
  • 2015年11月13日 23:04
  • 2617

蛇形矩阵 Java实现

4月3号腾讯实习生面试考到了蛇形矩阵,尼玛没做出来,要跪了。。。 后面想了想,实现了一个方案 蛇形矩阵:输入一个数n,输出对应的矩阵,比如 n=3,则矩阵为: 1  2  3 8  9  4 7  6...
  • zlp1992
  • zlp1992
  • 2016年04月04日 18:19
  • 2232

c语言实现输出二维蛇形矩阵

c语言实现输出二维蛇形矩阵
  • baidu_35534327
  • baidu_35534327
  • 2016年11月30日 23:36
  • 2230

C++ 打印蛇形矩阵

代码根据论坛的一个帖子修改而成。#include int row,col; int matrix[100][100]={0}; void UpFillNum(int); void Down...
  • bdmh
  • bdmh
  • 2010年12月29日 14:48
  • 6288

蛇形矩阵C++

输出以上螺旋矩阵 #include #include using namespace std; // 输出螺旋矩阵 void Matrix() { const int size = 10; ...
  • happyxuma1991
  • happyxuma1991
  • 2016年04月05日 21:43
  • 307

算法篇-蛇形矩阵

题目:在n*n方阵里填入1,2,3,···,n*n,要求填成蛇形,例如n=4时方阵为:                                                        ...
  • Liuchang54
  • Liuchang54
  • 2015年04月02日 22:24
  • 2432

算法 - 蛇形矩阵输出

var print = function (n) { var lineArr = []; var j, k; for (j = 0; j < n; j++) { ...
  • qq451354
  • qq451354
  • 2017年04月23日 15:27
  • 424

打印蛇形矩阵-题解

按照格式:"打印蛇形矩阵" Sample Input 5 Sample Output: 21 22 23 24 25 20 7   8    9  10 19 6   1    2  ...
  • First_sight
  • First_sight
  • 2015年01月15日 19:49
  • 720

c语言中的蛇形矩阵代码分享

谁能将下面的代码改成结果为1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16 的蛇形矩阵? 下面这个是C语言的代码: #include #define N 100 vo...
  • u012187684
  • u012187684
  • 2016年08月20日 17:29
  • 2983

蛇形矩阵的各种情形:共4种5类

/*   Name:    Copyright: goal00001111   Author:    Date: 14-11-08 09:25   Description: 蛇形矩阵的各种情...
  • QiaoRuoZhuo
  • QiaoRuoZhuo
  • 2014年10月14日 09:02
  • 553
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模拟 蛇形矩阵
举报原因:
原因补充:

(最多只允许输入30个字)