博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
17.蛇形矩阵(模拟)
阅读量:4950 次
发布时间:2019-06-11

本文共 1370 字,大约阅读时间需要 4 分钟。

时间限制: 1 s

 空间限制: 128000 KB

 题目等级 : 白银 Silver

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

思路:和原来的一样由外向里填数,因为n是奇数,所以从右下角开始,(偶数从左上角开始),

代码:

#include

#include

#include

using namespace std;

#define maxn 101

int a[maxn][maxn],tot=0,n,x,y;

long long sum=0;

void ts();

void sc();

int main()

{

       scanf("%d",&n);

       tot=n*n;

       x=n;y=n;

       a[n][n]=tot;//nn开始是因为输入一定是奇数

       ts();

       sc();

       return 0;

}

void sc()

{

       for(int i=1,j=1;i<=n&&j<=n;++i,++j)

       sum+=a[i][j];

       for(int i=1,j=n;i<=n&&j>=1;++i,--j)

       sum+=a[i][j];

       for(int i=1;i<=n;++i)

         {

         for(int j=1;j<=n;++j)

         printf("%-5d",a[j][i]);//五位向左对齐 ,注意输出是a[i][j]还是a[j][i]

         printf("\n");

      }

      printf("%d\n",sum-1);//中间相交的那个一,不重复加

}

void ts()

{

       while(tot>1)

       {

              while(x-1>=1&&a[x-1][y]==0) a[--x][y]=--tot;//从总数开始向里面移动

              while(y-1>=1&&!a[x][y-1]) a[x][--y]=--tot;//顺序是左,上,右,下的顺序

              while(x+1<=n&&!a[x+1][y]) a[++x][y]=--tot;

              while(y+1<=n&&!a[x][y+1]) a[x][++y]=--tot;

             

       }

}

n>
所在的高度储存下来

           if(a[i][2]!=0)

           h[a[i][2]]=h[i]+1;

       }

       for(int i=1;i<=n;++i)

       w[h[i]]++;//把每个高度的宽储存下来

       sort(h+1,h+n+1,cmp);//取宽度和高度最大的输出

       sort(w+1,w+n+1,cmp); 

       printf("%d %d",w[1],h[1]);

      

       return 0;

}

转载于:https://www.cnblogs.com/csgc0131123/p/5290521.html

你可能感兴趣的文章
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
表列数据类型选择
查看>>
端口02 - 零基础入门学习汇编语言68
查看>>
第4.6节 print、import及断言
查看>>
[转载]同步synchronized方法和代码块
查看>>
Python调试器,开发人员的必备技能包!
查看>>
springboot整合jsp
查看>>
DOM中的scrollWidth(Height/Left/Top),offsetWidth(Height/Left/Top)以及clientWidth(Height/Left/Top)...
查看>>
HTML && xml 的区别
查看>>
Python 字符串分割的方法
查看>>
调在线客服临时会话
查看>>
WY C语言 习题
查看>>
Mysql ==》 记录内容(数据)
查看>>
Bzoj1014 外星人Prefix
查看>>
JAVA项目从运维部署到项目开发(一.Jenkins)
查看>>
Apache Rewrite url重定向功能的简单配置
查看>>
hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
查看>>
GCD多线程机制
查看>>