pat乙级1050螺旋矩阵
1、用vector建立二维数组:
vector<vector<int>> arr(rows);
for (int i = ; i < rows; i++)
arr[i].resize(cols);
或:
vector<vector<int>> v(m, vector<int>(n));
2、当数组已初始化但某些下标还未赋值时,此下标对应的变量为NULL(见34行)
代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std; bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int n;
cin >> n;
vector<int> v(n);
for (int i = ; i < n; i++)
cin >> v[i];
sort(v.begin(), v.end(), cmp);
int s = sqrt(n);
while (n % s) s--;
int cols = s, rows = n / s;
/*
vector<vector<int>> arr(rows);
for (int i = 0; i < rows; i++)
arr[i].resize(cols);
*/
vector<vector<int>> arr(rows, vector<int>(cols));
int i = , j = , t = ;
int direction = ;
while (t < n)
{
if (direction == )
{
if (j < cols && arr[i][j] == NULL)
arr[i][j++] = v[t++];
else
{
i++;
j--;
direction = ;
}
}
else if (direction == )
{
if (i < rows && arr[i][j] == NULL)
arr[i++][j] = v[t++];
else
{
j--;
i--;
direction = ;
}
}
else if (direction == )
{
if (j >= && arr[i][j] == NULL)
arr[i][j--] = v[t++];
else
{
i--;
j++;
direction = ;
}
}
else if (direction == )
{
if (i >= && arr[i][j] == NULL)
arr[i--][j] = v[t++];
else
{
i++;
j++;
direction = ;
}
}
}
for (int i = ; i < rows; i++)
{
for (int j = ; j < cols; j++)
{
if (j) cout << " ";
cout << arr[i][j];
}
cout << endl;
}
return ;
}
pat乙级1050螺旋矩阵的更多相关文章
- PAT(B) 1050 螺旋矩阵(Java:24分)
题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...
- PAT Basic 1050 螺旋矩阵 (25 分)
本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N:m ...
- 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-乙级-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 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- PAT——1050. 螺旋矩阵
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条件:m*n等于N:m>=n:且m- ...
- PAT 1050 螺旋矩阵
https://pintia.cn/problem-sets/994805260223102976/problems/994805275146436608 本题要求将给定的 N 个正整数按非递增的顺序 ...
随机推荐
- C# 中的EventHandler实例详解-转
//这里定义了一个水箱类 public class 水箱 { //这是水箱的放水操作 public void 放水() { } //这是水箱的属性 public double 体积; ...
- CentOS7 搭建 rsync 服务器
1:安装软件包: yum install -y rsync 2:修改配置文件: /etc/rsyncd.conf uid = root gid = root use chroot = yes #下面是 ...
- Typography 文字排版
标签的语义 1. 含语义的标签 2. 不含语义, 但是具有样式的class <h1></h1> <p class="h1"></p> ...
- Unity3D -- shader常用函数和变量
最近在学习Unity Shader,写Shader的时候总是忘记Unity为我们提供的函数.变量怎么写的,这里整理一下,方便自己查阅,也提供给网友,学习Shader不易. 1.函数 float3 Wo ...
- Mysql-7-mysql函数
1.数学函数 用来处理数值数据方面的运算,主要的数学函数有:绝对值函数,三角函数,对数函数,随机函数.使用数学函数过程中,如果有错误产生,该函数会返回null值. 数学函数 功能介绍 组合键 abs( ...
- django的models字段介绍
#增加数据库数据方法#方法1CalcData.objects.create(var1 ='21',var2='22')#方法2obj =CalcData(var1 ='21',var2='22')jo ...
- Vue双向绑定实现原理demo
一.index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- win10移动热点问题
1.问题(win10移动热点相关) 具体描述: win10通过网线连接上网,打开移动热点后手机无法连接. 如下图所示,win10打开热,然后进入设置界面设置wlan名称和密码,手机填好密码,连接热点发 ...
- thinkphp5实现文章上一篇,下一篇
写在控制器 //列表是按照根据id降序排列的,所以上一篇 $prv=Db::table('qy_article')->where('at_id','>',$at_id)->where ...
- 运算符优先级 (JavaScript)
运算符优先级描述了在计算表达式时执行运算的顺序.先执行具有较高优先级的运算,然后执行较低优先级的运算.例如,先执行相乘,再执行相加. JavaScript 运算符 下表列出了 JavaScri ...