PAT (Advanced Level) 1105. Spiral Matrix (25)
简单模拟。
#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)的更多相关文章
- 【PAT甲级】1105 Spiral Matrix (25分)
题意:输入一个正整数N(实则<=1e5),接着输入一行N个正整数(<=1e4).降序输出螺旋矩阵. trick: 测试点1,3运行超时原因:直接用sqrt(N)来表示矩阵的宽会在N是素数时 ...
- 1105. Spiral Matrix (25)
This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi ...
- PAT甲题题解-1105. Spiral Matrix (25)-(模拟顺时针矩阵)
题意:给定N,以及N个数.找出满足m*n=N且m>=n且m-n最小的m.n值,建立大小为m*n矩阵,将N个数从大到下顺时针填入矩阵中. #include <iostream> #in ...
- PAT (Advanced Level) 1114. Family Property (25)
简单DFS. #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...
- PAT (Advanced Level) 1109. Group Photo (25)
简单模拟. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...
- PAT (Advanced Level) 1101. Quick Sort (25)
树状数组+离散化 #include<cstdio> #include<cstring> #include<cmath> #include<map> #i ...
- PAT (Advanced Level) 1071. Speech Patterns (25)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- PAT (Advanced Level) 1063. Set Similarity (25)
读入之后先排序. 询问的时候可以o(m)效率得到答案. #include<cstdio> #include<cstring> #include<cmath> #in ...
- PAT (Advanced Level) 1059. Prime Factors (25)
素因子分解. #include<iostream> #include<cstring> #include<cmath> #include<algorithm& ...
随机推荐
- IE/Chrome背景图片居中1px偏移解决方法
最近在支持行业运营的一个推广页面,遇到了非常规的页面banner图居中的问题,为了解决此问题,做了简单的测试,做了一个小结,为经常做大促页面的兄弟姐妹们提供参考解决方案. 首先来看看现象.最经典的页面 ...
- ADO.NET 数据访问类查询、属性扩展
今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select( ...
- CGridCtrl在MFC中的使用(一)
CGridCtrl控件是开源的,可在CodePlex和CodeProject上搜索找到,是VC++中用于显示表格数据的控件.基本功能包括:表格显示,单元格的编辑,单元格颜色设置,鼠标事件的响应,单元格 ...
- jspl零散知识点
1. 读取配置文件. index.jsp: <body> <% String charset=config.getInitParameter("charset" ...
- 学习笔记——责任链模式ChainOfResponsibility
责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况.Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj). 然后Handler类以其子类的处理方 ...
- Dialog对话框管理工具类
import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; i ...
- JS进阶书籍
http://blog.csdn.net/bingqingsuimeng/article/details/40535291 本来想尝试每天回答或看已解决的3个问题来学习总结今天的知识点,看了下博文里面 ...
- html 框架属性
<html> <head> <title></title> </head> <frameset col ...
- hdu_5768_Lucky7(中国剩余定理+容斥)
题目链接:hdu_5768_Lucky7 题意: 给你一个区间,问你这个区间内是7的倍数,并且满足%a[i]不等于w[i]的数的个数 乍一看以为是数位DP,仔细看看条件,发现要用中国剩余定理,然后容斥 ...
- Git 暂存区的概念
工作区:我们在电脑里面能看到的目录,也就是我们用git init 命令初始化的那个目录.里面包含要添加文件和需要提交的文件,在这个目录下的文件,修改和变更,我们的git都能感知的到. 版本库:工作区有 ...