博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 1050 螺旋矩阵(25)(代码)
阅读量:4979 次
发布时间:2019-06-12

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

1050 螺旋矩阵(25)(25 分)

本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。

输入格式:

输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过10^4^,相邻数字以空格分隔。

输出格式:

输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔,行末不得有多余空格。

输入样例:

1237 76 20 98 76 42 53 95 60 81 58 93

输出样例:

98 95 9342 37 8153 20 7658 60 76

PS:

    这道题在《信息学奥赛》上有(我没有抄!那几个while的部分是在监视窗口一步步调试修正),这里用vector创建动态数组 ,跟其他人的代码没多大区别,所以这道题就不细说思路了,不懂的话可以直接找我0.0,另外还做了一些简化。

  注意:需要使用动态数组(测试点7)

#include
#include
#include
#include
using namespace std;int main() { int a[10000]; int N, m, n; cin >> N; for (int i = sqrt(N) + 1; i > 0; i--) if (N%i == 0) { m = i; n = N / i; break; } if (m < n) swap(m, n); //保证m>n; vector
>b(m + 1); //使用vector创建二维动态数组(第1行第1列为了方便理解不使用) for (int i = 0; i <= m; i++) b[i].resize(n + 1); for (int i = 0; i < N; i++) cin >> a[i]; sort(a, a + N, greater
()); //降序排序 int i = 1, j = 0, count = 0; while (N!=count) { while (j < n&&b[i][j + 1] == 0) b[i][++j] = a[count++]; while (i < m&&b[i + 1][j] == 0)b[++i][j] = a[count++]; while (j > 1 && b[i][j - 1] == 0)b[i][--j] = a[count++]; while (i > 1 && b[i - 1][j] == 0)b[--i][j] = a[count++]; } for (int i = 1; i <= m; i++) { cout << b[i][1]; for (int j = 2; j <= n; j++) cout << " " << b[i][j]; cout << endl; } return 0;}

 

 

转载于:https://www.cnblogs.com/F-itachi/p/9974407.html

你可能感兴趣的文章
Intellij Idea新建web项目(转)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
centos iptables
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>