本题要求将给定的 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
我个人觉得,有的题目,思路清晰,比写的少更加重要,这道题,考的是设计模式,
如何设计出一个OBJ,进行控制性移动,类似小游戏中的主角,可以上下左右移动
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int data[][]={};
int width,height;
enum dir{ l,r,u,d }dir;//枚举设定方向
int x=,y=;
void changedir(){//改变路线
switch(dir){
case l:dir=u;break;
case u:dir=r;break;
case r:dir=d;break;
case d:dir=l;break;
}
}
void ahead(){
switch(dir){
case l:
if(x->=&&data[x-][y]==) x--;
else {
changedir();
ahead();
}
break;
case r:
if(x+<width&&data[x+][y]==) x++;
else{
changedir();
ahead();
}
break;
case u:
if(y->=&&data[x][y-]==) y--;
else{
changedir();
ahead();
}
break;
case d:
if(y+<height&&data[x][y+]==) y++;
else{
changedir();
ahead();
}
break;
}
}
int main()
{
int M;
scanf("%d",&M);
int num[M];
for(int i=;i<M;i++) scanf("%d",num+i);
sort(num,num+M,greater<int>());
for(int i=;i<=sqrt(M);i++) if(M%i==) width=i;
height=M/width;
if(width<height) swap(width,height);
data[x][y]=num[];dir=d;
for(int i=;i<M;i++){
ahead();
data[x][y]=num[i];
}
for(int i=;i<width;i++)
for(int j=;j<height;j++)
if(j!=height-) printf("%d ",data[i][j]);
else printf("%d\n",data[i][j]);
system("pause");
return ;
}

PAT Basic 1050 螺旋矩阵 (25 分)的更多相关文章

  1. PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 目录 PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) ...

  2. 1050 螺旋矩阵 (25 分)C语言

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

  3. PAT 1050 螺旋矩阵(25)(代码)

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

  4. PAT(B) 1050 螺旋矩阵(Java:24分)

    题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...

  5. PAT-乙级-1050. 螺旋矩阵(25)

    1050. 螺旋矩阵(25) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求将给定的N个正整数按非递增的 ...

  6. PAT 1050. 螺旋矩阵(25)

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

  7. 1050. 螺旋矩阵(25) pat乙级题

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

  8. PAT Basic 1015 德才论 (25 分)

    宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...

  9. pat乙级1050螺旋矩阵

    1.用vector建立二维数组: vector<vector<int>> arr(rows); ; i < rows; i++) arr[i].resize(cols); ...

随机推荐

  1. iOS技术面试07:第三方框架

    1ios框架分为:cocoa Touch:UIKit.Foundation.附属框架 Media:OpenGL ES.EAGL.Quartz.Core Animation.Core Audio.    ...

  2. 使用python或robotframework调multipart/form-data接口上传文件

    这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...

  3. spring boot 单选按钮

    jsp代码 性别: <form:radiobutton path="xb" value="男"/>男 <form:radiobutton pa ...

  4. mysql无法压缩存储表情

    原文链接:https://www.cnblogs.com/SimonHu1993/p/7573868.html mysql无法压缩存储表情compress(str),就选择过滤把emoji表情符号替换 ...

  5. html5 外链式实现加减乘除

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Python--读取数据库

    原文地址:https://www.wukong.com/answer/6591280609824342286/?iid=40708017633&app=news_article&sha ...

  7. STM32启动文件详解

    启动文件使用的 ARM 汇编指令汇总 启动程序源码注释(点此下载) 1. Stack—栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE ...

  8. SAS学习笔记44 宏函数

    类SAS函数的宏函数 该部分函数共5个,其无论是名字.语法.功能都与SAS函数类似,只是在函数名前多了一个“%”.这5个宏函数分别是: %INDEX %LENGTH %SCAN %SUBSTR %UP ...

  9. javascript 写一个ajax 自动拦截,并下载数据

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  10. MySQL中的索引详讲(转)

    https://www.cnblogs.com/whgk/p/6179612.html