PAT B1050 螺旋矩阵 (25 分)
本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N;m≥n;且 m−n 取所有可能值中的最小值。
输入格式:
输入在第 1 行中给出一个正整数 N,第 2 行给出 N 个待填充的正整数。所有数字不超过 1,相邻数字以空格分隔。
输出格式:
输出螺旋矩阵。每行 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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
bool cmp(int i1, int i2){
return i1 > i2;
}
const int maxn = ;
int q[maxn] = { };
int res[maxn][] = { }; int main(){
int n, row, col;
scanf("%d", &n);
col = sqrt(n);
for (col; col > ; col--){
if (n%col == ){
row = n / col;
break;
}
}
for (int i = ; i < n; i++){
scanf("%d", &q[i]);
}
sort(q, q + n, cmp);
//int res[row][col]={0};
for (int i = ; i < col; i++){
res[][i] = q[i];
}
int num = col, flag = , tmp_row = , tmp_col = col - , flag_r = , flag_c = ;
while (num<n){
if (flag % == ){
for (tmp_row; tmp_row < row - flag_r; tmp_row++){
res[tmp_row][tmp_col] = q[num++];
}
flag++;
flag_r++;
tmp_col--;
tmp_row--;
}
else if (flag % == ){
for (tmp_col; tmp_col >= flag_c; tmp_col--){
res[tmp_row][tmp_col] = q[num++];
}
flag++;
flag_c++;
tmp_row--;
tmp_col++;
}
else if (flag % == ){
for (tmp_row; tmp_row >= flag_r; tmp_row--){
res[tmp_row][tmp_col] = q[num++];
}
flag++;
//flag_r++;
tmp_col++;
tmp_row++;
}
else if (flag % == ){
for (tmp_col; tmp_col < col - flag_c; tmp_col++){
res[tmp_row][tmp_col] = q[num++];
}
flag++;
//flag_c++;
tmp_row++;
tmp_col--;
}
}
for (int i = ; i < row; i++){
for (int j = ; j < col; j++){
printf("%d", res[i][j]);
if (j != col - )printf(" ");
}
printf("\n");
}
system("pause");
}
注意点:这道题没有什么取巧的方法,就把螺旋矩阵一个个赋值过来。但这里面的一个问题让我百思不得其解,c和c++创建数组时的大小不是必须要是常量吗,为什么可以用变量去创建,在我的vs2013上是报错的,直接在pintia上提交就没问题,是后面哪个c++标准改了吗。vs2017里也不行
PS:error C2057:应输入常量表达式
PAT B1050 螺旋矩阵 (25 分)的更多相关文章
- PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 目录 PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) ...
- PAT 1050 螺旋矩阵(25)(代码)
1050 螺旋矩阵(25)(25 分) 本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方 ...
- PAT Basic 1050 螺旋矩阵 (25 分)
本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N:m ...
- 1050 螺旋矩阵 (25 分)C语言
本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...
- PAT 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- PAT-乙级-1050. 螺旋矩阵(25)
1050. 螺旋矩阵(25) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求将给定的N个正整数按非递增的 ...
- PTA PAT排名汇总(25 分)
PAT排名汇总(25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科 ...
- 1050. 螺旋矩阵(25) pat乙级题
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条件:m*n等于N:m>=n:且m- ...
- 【算法笔记】B1050 螺旋矩阵
1050 螺旋矩阵 (25 分) 本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...
随机推荐
- MVC--DefaultModelBinder解析request参数
转载:http://www.cnblogs.com/leotsai/p/ASPNET-MVC-DefaultModelBinder.html 看到很多ASP.NET MVC项目还在从request.q ...
- python3获取一个网页特定内容
我们今天要爬取的网址为:https://www.zhiliti.com.cn/html/luoji/list7_1.html 一.目标:获取下图红色部分内容 即获取所有的题目以及答案. 二.实现步骤. ...
- Js利用Canvas实现图片压缩
最近做的APP项目涉及到手机拍照上传图片,因为手机拍照的图片通常都比较大,所以上传的时候就会很慢.为此,需要对图片进行压缩处理来优化上传功能.以下是具体实现: /* * 图片压缩 * img 原始图片 ...
- JavaScript判断变量名是否存在数组中
直接上代码: JavaScript代码: var array=[{name:"张珊",sex:"男"}]; console.log(array); if(arr ...
- View的layout机制
View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw). 源代码分析 在View的源代码中, ...
- jmeter之数据库相关
一.JDBC Connection Configuration 1.Variable Name Bound to Pool-Variable Name:连接池名称, JDBC Request通过此名称 ...
- Solving the SQL Server Multiple Cascade Path Issue with a Trigger (转载)
Problem I am trying to use the ON DELETE CASCADE option when creating a foreign key on my database, ...
- EOFException异常详解
最近线上的系统被检测出有错误日志,领导让我检查下问题,我就顺便了解了下这个异常. 了解一个类,当然是先去看他的API,EOFException的API如下: 通过这个API,我们可以得出以下信息: 这 ...
- SQL Server 复制表结构、整表数据
1.将表1结构复制到表2 SELECT * INTO 表2 FROM 表1 WHERE 1=2 2.将表1内容全部复制到表2 SELECT * INTO 表2 FROM 表1
- jQuery表格排序(tablesorter)
1.在html页面的head中引用 <script src="/static/Bootstrap/js/jquery/jquery.tablesorter.min.js"&g ...