3877——鬼吹灯之黄皮子坟(螺旋矩阵)
鬼吹灯之黄皮子坟(螺旋矩阵)
Time Limit: 1000 msMemory Limit: 65536 KiBSubmitStatisticProblem DescriptionbLue 有一个长度为 n*n 的序列,现在他想把这个序列填到一个 n*n 的螺旋矩阵中,你能帮助他吗?Input输入数据有多组(数据组数不超过 20),到 EOF 结束。
对于每组数据:
第 1 行输入 1 个奇数 n (1 <= n <= 9, n%2 = 1)
第 2 行输入 n*n 个用空格隔开的整数(范围 [0, 100]),表示初始序列Output对于每组数据,输出一个 n*n 的矩阵,同一行内相邻整数之间用一个 '\t' 隔开。每组数据结尾额外输出一行空行。Sample Input3
1 2 3 4 5 6 7 8 9
5
5 3 2 4 8 7 1 6 9 10 11 12 13 14 15 16 17 18 19 20 21 25 27 29 33
Sample Output7 8 9
6 1 2
5 4 3
21 25 27 29 33
20 1 6 9 10
19 7 5 3 11
18 8 4 2 12
17 16 15 14 13
Hint仔细观察示例,填螺旋矩阵时,初始位置为矩阵中心,按照向右、向下、向左、向上的顺序,把序列中的数从内到外一圈一圈填入矩阵中即可。
#include <stdio.h>int n, b[9][9], a[81], cnt;void Fill(int x, int y)
{if(x>=0 && x<n && y>=0 && y<n){b[x][y] = a[cnt++];}
}void f(int l, int r, int u, int d)
{if(l >= -1){for(int i=l+1; i<=r; ++i){Fill(u, i);//右;}for(int i=u+1; i<=d; ++i){Fill(i, r);//下;}for(int i=r-1; i>=l; --i){Fill(d, i);//左;}for(int i=d-1; i>=u; --i){Fill(i, l);//上;}f(l-1, r+1, u-1, d+1);}
}int main()
{while(~ scanf("%d", &n)){for(int i=0; i<n*n; ++i){scanf("%d", &a[i]);}cnt = 0;f(n/2-1, n/2+1, n/2, n/2+1);for(int i=0; i<n; ++i){for(int j=0; j<n; ++j){if(j) printf("\t");printf("%d", b[i][j]);}printf("\n");}printf("\n");}return 0;
}
#include <stdio.h>
#include <string.h>
int i, a[125], p[12][12];
void Creat(int n,int left,int right)
{int k;if(left==right){p[left][right]=a[++i];}else{for(k=left;k<=right;k++){p[k][right]=a[++i];}for(k=right-1;k>=left-1;k--){p[right][k]=a[++i];}for(k=right-1;k>=left-1;k--){p[k][left-1]=a[++i];}for(k=left;k<=right;k++){p[left-1][k]=a[++i];}}if(left==right) {Creat(n,left,right+1);}else if(right<n) {Creat(n,left-1,right+1); }
}
int main()
{int n;while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a));memset(p,0,sizeof(p));for(i=1;i<=n*n;i++){scanf("%d",&a[i]);}i=0;int j;Creat(n,n/2+1,n/2+1);for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(j==n){printf("%d\n",p[i][j]);}else{printf("%d\t",p[i][j]);}}}printf("\n");}return 0;
}
3877——鬼吹灯之黄皮子坟(螺旋矩阵)相关推荐
- 用python做算法_自己用python写的螺旋矩阵生成算法
自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...
- LeetCode实战:螺旋矩阵 II
题目英文 Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spir ...
- 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- java55矩阵output_leetcode 59 螺旋矩阵2 Java 用时较短-Go语言中文社区
题目: 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, ...
- LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/5214 ...
- LeetCode Spiral Matrix II (生成螺旋矩阵)
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. F ...
- leetcode算法题--螺旋矩阵 II
原题链接:https://leetcode-cn.com/problems/spiral-matrix-ii/ 相关题目:螺旋矩阵 vector<vector<int>> ge ...
- Python实现打印螺旋矩阵功能的方法
Python实现打印螺旋矩阵功能的方法 本文实例讲述了Python实现打印螺旋矩阵功能的方法.分享给大家供大家参考,具体如下: 一.问题描述 输入N, 打印 N*N 螺旋矩阵 比如 N = 3,打印: ...
- LeetCode-数组-54. 螺旋矩阵
54. 螺旋矩阵 解题思路: 这里的方法不需要记录已经走过的路径,所以执行用时和内存消耗都相对较小 首先设定上下左右边界 其次向右移动到最右,此时第一行因为已经使用过了,可以将其从图中删去,体现在代码 ...
最新文章
- 09CSS元素显示模式
- 精度,精确率,召回率_了解并记住精度和召回率
- 二叉树题目----4 前序遍历重构二叉树 AND 求二叉树中所有结点的个数
- java xms xmx 默认值_JVM启动参数-Xmx的默认值是多少?
- SQLAlchemy Mapping Class Inheritance Hierarchies
- dalvik on J2EE: running tomcat on dalvik
- tsql 正则_sql里的正则表达式
- 抽象高于实现 ——unity框架提取
- 第十三次CCF CSP认证(2018年3月)真题跳一跳
- ArcGIS学习总结(18)——面要素/矢量拆分
- django中url 和 path 的区别
- 没有发现必备补丁文件‘NewopUI.pak’?
- 数学基础修炼手册-数学分析-凸优化
- android 手势密码存储,Android 简易手势密码开源库详解
- 申请ARM DS-5单月试用版并安装
- 每日英语:China Bridge Collapse Raises Infrastructure Concerns
- 二战中真实的打酱油船
- vulnhub靶机-DC7-Writeup
- O2OA二次开发(一)前后端源码打包部署命令
- 关于成功人士成功秘诀的乱弹琴