题目地址

#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 分)相关推荐

  1. C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)

    1050 螺旋矩阵 (25 分) 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋 ...

  2. 【最全解析】1050 螺旋矩阵 (25分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵&q ...

  3. PAT乙级 1110 区块反转 (25 分) C++

    1110 区块反转 (25 分) 给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转.例如:给定 L 为 1→2 ...

  4. 1050. 螺旋矩阵(25)-PAT乙级真题

    本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...

  5. 1050. 螺旋矩阵(25)

    本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...

  6. PAT乙级1030 完美数列 (25 分)

    1030 完美数列 (25 分) 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可 ...

  7. PAT乙级1025反转链表 25(分)

    1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为3→2→1→6→5→ ...

  8. PAT 乙级 1015 德才论 (25 分)

    1015 德才论 (25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小 ...

  9. 【PAT乙级】1055 集体照 (25 分)

    题目地址 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; struct node {string name ...

最新文章

  1. python练习程序(批量重命名)
  2. 【最详细解析】1052 卖个萌 (20分)_28行代码AC
  3. Codeforces Round #524 Div. 2 翻车记
  4. 后端技术:Java中Spring 和 Spring Boot 有哪些区别,看完你就明白了!
  5. 工作92:500错误
  6. App开发定制的种类:企业需要开发哪种App?
  7. 2018青岛ICPC ZOJ 4062: Plants vs. Zombies(二分)
  8. ajax 同步和异步的区别
  9. php装逼的面试问题,面试读心术,教你如何优雅的在面试官前装逼
  10. ee er_英语单词说文解字—第32节 后缀er和ee的构词
  11. 千兆网线的制作方法和千兆网线的施工注意事项
  12. C++中的LPVOID类型
  13. 【电驱动】驱动电机系统讲解
  14. C语言计算n阶行列式
  15. linux下查看硬盘型号、大小等信息
  16. java 朋友圈分享接口_微信发朋友圈api接口调用代码
  17. SqlServer中sql执行顺序
  18. 雪球释老毛推荐的投资者书单
  19. android 百度地图大头针,百度地图的集成 ---自定义大头针和弹窗
  20. 《将博客搬至CSDN》_se7en3_新浪博客

热门文章

  1. cnpm与npm指定有什么区别?
  2. js 数组 转为树形结构
  3. XJOI 3629 非严格次小生成树(pqq的礼物)
  4. OFDM同步算法之Park算法
  5. 关于UNION ALL与 UNION 用法和区别
  6. Coding 初级教程(二)——上传已有项目
  7. VS2008常见编译错误(总结篇)
  8. ubuntu 13.04 设置Dash中显示Eclipse
  9. bidirectional pathtracing算法学习
  10. SD2C大会,JavaScript + Delphi + ErLang 讲演相关资料完全公开!