codevs1160-蛇形矩阵(螺旋矩阵)
来源:互联网 发布:大连民族大学网络教学 编辑:程序博客网 时间:2024/06/08 01:04
小明玩一个数字游戏,取个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 <iostream>#include<algorithm>#include<memory.h>using namespace std;int n;int a[101][101];int num = 1;//记录当前的数字int row=50, col=50;//记录当前的行列号int sum = 1;//记录对角线的和int flag[4];//对四角的数字进行标记int main(){a[50][50] = 1;//将中心初始化为1cin >> n;for (int i=3;i<=n;i=i+2){memset(flag, 0, sizeof(flag));col++;//每一圈的开始都是要先向右走一步num++;a[row][col] = num;for (int j=1;j<(i-1)*4;j++)//计算可知每一圈元素的个数为4*n-4,减去的4是重复计算的,n圈的大小{//整个循环进行4*(i-1)-1次,因为在外面已经走了一步if (j < i - 1){//向上走row--;num++;a[row][col] = num;}else if (j < 2 * (i - 1)){//向左走if (flag[0]==0){flag[0] = 1;sum += num;//右上角}col--;num++;a[row][col] = num;}else if (j < 3 * (i - 1)){//向下走if (flag[1] == 0){flag[1] = 1;sum += num;//左上角}row++;num++;a[row][col] = num;}else{//向右走if (flag[2] == 0){flag[2] = 1;sum += num;//左下角}col++;num++;a[row][col] = num;}}sum += num;//右上角}for (int i=50 - n / 2;i<= 50 + n / 2;i++){for (int j= 50 - n / 2;j<= 50 + n / 2;j++)cout << a[i][j] << " ";cout << endl;}cout << sum;cin >> n;return 0;}
阅读全文
0 0
- codevs1160-蛇形矩阵(螺旋矩阵)
- codevs1160 蛇形矩阵
- 蛇形矩阵(螺旋矩阵)
- 螺旋矩阵和蛇形矩阵
- 蛇形矩阵 和螺旋矩阵
- 蛇形矩阵与螺旋矩阵
- 螺旋矩阵和蛇形矩阵
- [经典面试题]蛇形矩阵(螺旋矩阵)
- 数组——蛇形矩阵、螺旋矩阵
- 蛇形矩阵,回环矩阵,数字螺旋矩阵的PHP实现
- 矩阵填数-倒填、螺旋、蛇形
- 螺旋方针(螺旋矩阵)
- 蛇形(回形)矩阵
- 蛇形矩阵(完全)
- 环形(蛇形)矩阵
- 螺旋矩阵(java)
- 螺旋矩阵(算法)
- 螺旋矩阵(队列)
- Linux之shell基础
- 进程间的通讯方式_信号量
- mac 安装docker
- 国考将至 手机管家提醒:“包过关”你别信
- IP虽好仍需孵化平台助力 QQ浏览器提速优质内容接入
- codevs1160-蛇形矩阵(螺旋矩阵)
- 够快才畅快vivo X6跨界首发全球最强Hi-Fi芯片 或同时发布耳机
- 基础知识总结:基本数据类型
- 每日产品辣评:华为 Mate 8正式发布,2999元起售
- Kafka详细教程:下载、安装、配置与集群部署
- 图论——马语翻译
- 视频:行业首款智能手表跟拍与避障无人机XEagle发布会
- 移动端车牌字符识别技术
- Conditional Variable