PAT 1050 螺旋矩阵(25)(代码)
1050 螺旋矩阵(25)(25 分)
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。
输入格式:
输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过10^4^,相邻数字以空格分隔。
输出格式:
输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔,行末不得有多余空格。
输入样例:
12
37 76 20 98 76 42 53 95 60 81 58 93
输出样例:
98 95 93
42 37 81
53 20 76
58 60 76
PS:
这道题在《信息学奥赛》上有(我没有抄!那几个while的部分是在监视窗口一步步调试修正),这里用vector创建动态数组 ,跟其他人的代码没多大区别,所以这道题就不细说思路了,不懂的话可以直接找我0.0,另外还做了一些简化。
注意:需要使用动态数组(测试点7)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
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<vector<int>>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>()); //降序排序
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;
}
PAT 1050 螺旋矩阵(25)(代码)的更多相关文章
- PAT 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 目录 PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) ...
- PAT-乙级-1050. 螺旋矩阵(25)
1050. 螺旋矩阵(25) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求将给定的N个正整数按非递增的 ...
- 1050. 螺旋矩阵(25) pat乙级题
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条件:m*n等于N:m>=n:且m- ...
- PAT Basic 1050 螺旋矩阵 (25 分)
本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N:m ...
- PAT 1050 螺旋矩阵
https://pintia.cn/problem-sets/994805260223102976/problems/994805275146436608 本题要求将给定的 N 个正整数按非递增的顺序 ...
- PAT——1050. 螺旋矩阵
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条件:m*n等于N:m>=n:且m- ...
- 1050 螺旋矩阵 (25 分)C语言
本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...
- PAT(B) 1050 螺旋矩阵(Java:24分)
题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...
随机推荐
- ArcGIS案例学习笔记2_1_学校选址适宜性分析
ArcGIS案例学习笔记2_1_学校选址适宜性分析 计划时间:第二天上午 目的:学校选址,适宜性分析 内容:栅格数据分析 教程:pdf page=323 数据:chapter8/ex1/教育,生活,土 ...
- Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
原文地址,转载请注明出处:http://www.cnblogs.com/jying/p/6294063.html 做项目的时候发现给 tbody设置 height 和 overflow-y 在IE下不 ...
- ubuntu上安装mysql的正确步骤
1.在Ubuntu software Center中下载mysql:[注:mysql下载下来后好像就安装上了] 2.使用命令检查mysql是否已安装上: 2.1 运行sudo netstat -tap ...
- 学JS的心路历程-函式(四)apply、call
从上一篇可以知道,不同的函式呼叫会造成this的不同,但我们能不能在呼叫时候明确指定呢? 当然可以.会有这个想法是因为往往在执行某支函式时想要用回呼函式(mizumisushi),但发现this总是显 ...
- java.lang.UnsupportedClassVersionError 异常
运行的JDK版本和开发环境的版本不一致导致 解决办法:更换运行环境的JDK版本,使其与运行环境一致.
- pyhton笔记(一):字符编码、变量
一.什么是python? python是一种面向对象.解释型的计算机语言,它的特点是语法简洁.优雅.简单易学. 编译型语言: 写好代码之后把代码编译成二进制文件,运行时运行编译好的二进制文件.比如C. ...
- 详解 Tomcat 的连接数与线程池
前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server. ...
- cekephp 事务处理
$sw = $this->Orders->getDataSource(); $sw->begin(); $this->Orders->commit() $this-> ...
- 从源码安装Node
[从源码安装Node] Nodejs官网未并提供i686架构的bin,为了在i686架构cpu下使用Nodejs,需要从源码编译. 1../configure 2.make 3.make instal ...
- destructuring assignment
[destructuring assignment] The destructuring assignment syntax is a JavaScript expression that makes ...