简单模拟。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<string>
#include<algorithm>
using namespace std; const int maxn=+;
int N,a[maxn];
int ans[maxn];
int m,n;
int dir[][]; void f()
{
dir[][]=;dir[][]=;
dir[][]=;dir[][]=;
dir[][]=;dir[][]=-;
dir[][]=-;dir[][]=;
} bool cmp(const int&a,const int&b)
{
return a>b;
} int main()
{
scanf("%d",&N);
f();
for(int i=;i<=N;i++) scanf("%d",&a[i]);
sort(a+,a++N,cmp); for(int i=sqrt(1.0*N);i>=;i--)
if(N%i==){n=i,m=N/i;break;} memset(ans,-,sizeof ans);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
ans[(i-)*n+j]=; int nowDir=;
int nowX=,nowY=;
for(int i=;i<=N;i++)
{
ans[(nowX-)*n+nowY]=a[i];
int NewX=nowX+dir[nowDir][];
int NewY=nowY+dir[nowDir][];
if(ans[(NewX-)*n+NewY]!=||NewX<=||NewX>=m+||NewY<=||NewY>=n+) nowDir=(nowDir+)%;
nowX=nowX+dir[nowDir][];
nowY=nowY+dir[nowDir][];
}
int num=;
// for(int i=1;i<=m*n;i++) printf("%d ",ans[i]); for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
{
printf("%d",ans[num++]);
if(j<n) printf(" ");
else printf("\n");
}
return ;
}

PAT (Advanced Level) 1105. Spiral Matrix (25)的更多相关文章

  1. 【PAT甲级】1105 Spiral Matrix (25分)

    题意:输入一个正整数N(实则<=1e5),接着输入一行N个正整数(<=1e4).降序输出螺旋矩阵. trick: 测试点1,3运行超时原因:直接用sqrt(N)来表示矩阵的宽会在N是素数时 ...

  2. 1105. Spiral Matrix (25)

    This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi ...

  3. PAT甲题题解-1105. Spiral Matrix (25)-(模拟顺时针矩阵)

    题意:给定N,以及N个数.找出满足m*n=N且m>=n且m-n最小的m.n值,建立大小为m*n矩阵,将N个数从大到下顺时针填入矩阵中. #include <iostream> #in ...

  4. PAT (Advanced Level) 1114. Family Property (25)

    简单DFS. #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...

  5. PAT (Advanced Level) 1109. Group Photo (25)

    简单模拟. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...

  6. PAT (Advanced Level) 1101. Quick Sort (25)

    树状数组+离散化 #include<cstdio> #include<cstring> #include<cmath> #include<map> #i ...

  7. PAT (Advanced Level) 1071. Speech Patterns (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  8. PAT (Advanced Level) 1063. Set Similarity (25)

    读入之后先排序. 询问的时候可以o(m)效率得到答案. #include<cstdio> #include<cstring> #include<cmath> #in ...

  9. PAT (Advanced Level) 1059. Prime Factors (25)

    素因子分解. #include<iostream> #include<cstring> #include<cmath> #include<algorithm& ...

随机推荐

  1. IE/Chrome背景图片居中1px偏移解决方法

    最近在支持行业运营的一个推广页面,遇到了非常规的页面banner图居中的问题,为了解决此问题,做了简单的测试,做了一个小结,为经常做大促页面的兄弟姐妹们提供参考解决方案. 首先来看看现象.最经典的页面 ...

  2. ADO.NET 数据访问类查询、属性扩展

    今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select( ...

  3. CGridCtrl在MFC中的使用(一)

    CGridCtrl控件是开源的,可在CodePlex和CodeProject上搜索找到,是VC++中用于显示表格数据的控件.基本功能包括:表格显示,单元格的编辑,单元格颜色设置,鼠标事件的响应,单元格 ...

  4. jspl零散知识点

    1.  读取配置文件. index.jsp: <body> <% String charset=config.getInitParameter("charset" ...

  5. 学习笔记——责任链模式ChainOfResponsibility

    责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况.Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj). 然后Handler类以其子类的处理方 ...

  6. Dialog对话框管理工具类

    import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; i ...

  7. JS进阶书籍

    http://blog.csdn.net/bingqingsuimeng/article/details/40535291 本来想尝试每天回答或看已解决的3个问题来学习总结今天的知识点,看了下博文里面 ...

  8. html 框架属性

    <html>    <head>        <title></title>    </head>    <frameset col ...

  9. hdu_5768_Lucky7(中国剩余定理+容斥)

    题目链接:hdu_5768_Lucky7 题意: 给你一个区间,问你这个区间内是7的倍数,并且满足%a[i]不等于w[i]的数的个数 乍一看以为是数位DP,仔细看看条件,发现要用中国剩余定理,然后容斥 ...

  10. Git 暂存区的概念

    工作区:我们在电脑里面能看到的目录,也就是我们用git init 命令初始化的那个目录.里面包含要添加文件和需要提交的文件,在这个目录下的文件,修改和变更,我们的git都能感知的到. 版本库:工作区有 ...