【PAT乙级】1050 螺旋矩阵 (25 分)
题目地址
#include<cstdio>
#include<iostream>
#include<string>
#include<vector>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=10005;int a[10005][105];
int s[N];
int k,n,m;int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
bool cmp(int x,int y)
{return x>y;
}
int main(void)
{cin>>k;for(int i=0;i<k;i++) cin>>s[i];if(k==0) return 0;for(int i=1;i<=sqrt(k);i++) if(k%i==0) n=i,m=k/i;sort(s,s+k,cmp);memset(a,0x3f,sizeof a);int x=0,y=0,d=0;int index=0;while(index<k){a[x][y]=s[index++];int tempx=x+dx[d];int tempy=y+dy[d];if(tempx<0||tempx>=m||tempy<0||tempy>=n||a[tempx][tempy]!=0x3f3f3f3f) d=(d+1)%4; x=x+dx[d];y=y+dy[d];}for(int i=0;i<m;i++){for(int j=0;j<n;j++){cout<<a[i][j];if(j+1!=n) cout<<" ";}cout<<endl;}return 0;
}
#include<bits/stdc++.h>
using namespace std;
int a[10005][105],n,m,k;
int b[10005];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
bool cmp(int x,int y) { return x>y; }
int main(void)
{cin>>k;for(int i=0;i<k;i++) cin>>b[i];sort(b,b+k,cmp);for(int i=1;i<=sqrt(k);i++) if(k%i==0) m=k/i,n=i;if(m>n) swap(n,m);int d=0,step=0,x=0,y=0;while(step!=k){a[x][y]=b[step];int tempx=x+dx[d],tempy=y+dy[d];if(tempx<0||tempx>=n||tempy<0||tempy>=m||a[tempx][tempy]) d=(d+1)%4;tempx=x+dx[d],tempy=y+dy[d];x=tempx,y=tempy;step++; }for(int i=0;i<n;i++){for(int j=0;j<m;j++) {cout<<a[i][j];if(j!=m-1) cout<<" ";}if(i!=n-1)cout<<endl;}return 0;
}
【PAT乙级】1050 螺旋矩阵 (25 分)相关推荐
- C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)
1050 螺旋矩阵 (25 分) 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋 ...
- 【最全解析】1050 螺旋矩阵 (25分)
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵&q ...
- PAT乙级 1110 区块反转 (25 分) C++
1110 区块反转 (25 分) 给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转.例如:给定 L 为 1→2 ...
- 1050. 螺旋矩阵(25)-PAT乙级真题
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- PAT乙级1030 完美数列 (25 分)
1030 完美数列 (25 分) 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可 ...
- PAT乙级1025反转链表 25(分)
1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为3→2→1→6→5→ ...
- PAT 乙级 1015 德才论 (25 分)
1015 德才论 (25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小 ...
- 【PAT乙级】1055 集体照 (25 分)
题目地址 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; struct node {string name ...
最新文章
- python练习程序(批量重命名)
- 【最详细解析】1052 卖个萌 (20分)_28行代码AC
- Codeforces Round #524 Div. 2 翻车记
- 后端技术:Java中Spring 和 Spring Boot 有哪些区别,看完你就明白了!
- 工作92:500错误
- App开发定制的种类:企业需要开发哪种App?
- 2018青岛ICPC ZOJ 4062: Plants vs. Zombies(二分)
- ajax 同步和异步的区别
- php装逼的面试问题,面试读心术,教你如何优雅的在面试官前装逼
- ee er_英语单词说文解字—第32节 后缀er和ee的构词
- 千兆网线的制作方法和千兆网线的施工注意事项
- C++中的LPVOID类型
- 【电驱动】驱动电机系统讲解
- C语言计算n阶行列式
- linux下查看硬盘型号、大小等信息
- java 朋友圈分享接口_微信发朋友圈api接口调用代码
- SqlServer中sql执行顺序
- 雪球释老毛推荐的投资者书单
- android 百度地图大头针,百度地图的集成 ---自定义大头针和弹窗
- 《将博客搬至CSDN》_se7en3_新浪博客