1050 螺旋矩阵 (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<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn = 10010; int matrix[maxn][maxn],A[maxn]; bool cmp(int a,int b){return a > b; }int main(){int N;scanf("%d",&N);for(int i = 0; i < N; i++){scanf("%d",&A[i]);}sort(A,A+N,cmp);if(N == 1){printf("%d",A[0]);return 0;}int m = (int)ceil(sqrt(1.0*N));while(N % m != 0) m++;int n = N/m,i = 1,j = 1,now = 0; //m is line,n is columnint U = 1,D = m,L = 1,R = n;while(now < N){while(now < N && j < R){ //forward to rightmatrix[i][j] = A[now++];j++;}while(now < N && i < D){matrix[i][j] = A[now++]; //to downi++;}while(now < N && j > L){ //forward to downmatrix[i][j] = A[now++];j--;}while(now < N && i > U){ //forward to leftmatrix[i][j] = A[now++];i--;}U++;D--;L++;R--;i++;j++;if(now == N - 1) matrix[i][j] = A[now++];}for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){printf("%d",matrix[i][j]);if(j < n) printf(" ");else printf("\n");}}return 0; }
//网上的代码,暂留 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<cctype> using namespace std; int n; void solve(){int a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);}sort(a,a+n);int x=sqrt(n),m;while(n%x){x--;}m=n/x;int t[m][x];for(int side=0,k=n-1;side*2<x;side++){for(int j=side;j<x-side;j++){t[side][j]=a[k--];}for(int i=side+1;i<m-side;i++){t[i][x-1-side]=a[k--];}for(int j=x-2-side;j>=side;j--){t[m-1-side][j]=a[k--];}if(x-1-side>side){for(int i=m-2-side;i>=side+1;i--){t[i][side]=a[k--];}}}for(int i=0;i<m;i++){for(int j=0;j<x;j++){printf("%d",t[i][j]);if(j+1<x){printf(" ");}}printf("\n");} } int main(){scanf("%d",&n);solve();return 0; }
转载于:https://www.cnblogs.com/wanghao-boke/p/10381031.html
1050 螺旋矩阵 (25 分相关推荐
- C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)
1050 螺旋矩阵 (25 分) 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋 ...
- 【最全解析】1050 螺旋矩阵 (25分)
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵&q ...
- 【PAT乙级】1050 螺旋矩阵 (25 分)
题目地址 #include<cstdio> #include<iostream> #include<string> #include<vector> # ...
- 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- 1050. 螺旋矩阵(25)-PAT乙级真题
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- PAT (Basic Level) 1050 螺旋矩阵(模拟)
题目链接:点击查看 题目大意:给出N个数,降序排序后构造螺旋矩阵,要求行n和列m满足要求n*m==N并且n>m并且(m-n)尽可能小 题目分析:排序后就是简单的蛇形填数了,网上都是用一个whil ...
- PAT 乙级练习 1050 螺旋矩阵 - 超级详细的思路讲解
PAT 乙级练习 题解合集 本题链接 题目 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按 ...
- PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...
- PAT 乙级 ------ 1046~1050 划拳、编程团体赛、数字加密、数列的片段和、螺旋矩阵附思路和代码
这个鬼天气欸,又降温到十几度了.看帖子的你,今天也要开心啊!!!PEACE & LOVE 1046 划拳 思路: 每次读取四个数,根据规则求和比较,只有一方胜利一方失败从才会喝酒,同赢同输 ...
最新文章
- windows线程同步-原子操作-Interlocked系列函数(用户模式)
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmKnowledge日积月累功能的实现...
- Linux内核目录结构(2.6版本以上的kernel)
- [工具]-电脑磁盘爆满了,但又不知道哪些文件占用的空间,怎么办?
- 潜行者活动硬盘电脑,你也可以打造
- wireshrk中的名词说明
- JS高级——纯函数、柯里化(手写自动柯里化函数)、组合函数(手写自动组合函数)
- CentOS7开放端口号
- Kali中firefox浏览器设置中文
- Jeecg 平台开发手册下载(20151014)
- 8 FI配置-财务会计-把总账科目组的字段状态变式分配给公司代码
- redis key命名规范_redis简介
- 开源 java CMS - FreeCMS2.7 移动端栏目页静态化
- 【Rmarkdown rmysql】
- python调用woff_修改Python脚本以批量转换目录中的所有“WOFF”文件
- 敌兵布阵——线段树单点修改区间查询
- 直播热潮之下的图片社交洼地
- 关于0x80070091 目录不是空的
- 趣谈C语言(基础篇)
- 网页设计颜色及平面设计的常用16进制+RGB色值表参考大全
热门文章
- 10.25模拟 三角形
- SEO 百度后台主动推送链接
- apache camel 相关配置_使用apache camel从表中选择数据-问答-阿里云开发者社区-阿里云...
- 服务器旧图片维护,图片服务器
- ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?
- c语言入门经典案例,c语言入门经典案例及飞源代码.doc
- echarts中triggeron与trigger不能同时出现吗_好物|痛风、血糖高、虚不受补能吃它吗?你想知道的阿胶十问十答一锅出!...
- 前端加按钮将图片另存为_Windows 10系统如何将自己的照片制作成文件夹图标
- git服务器维护 备份,gitlab服务运维,备份与恢复 - 橙子柠檬's Blog
- Java1.5增加了新特性:可变参数