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

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <cmath>
#define LEFT 1
#define RIGHT 2
#define UP 3
#define DOWN 4
using namespace std;
const int maxn=+;
int a[maxn];
int n,m;
int N;
int main()
{
int **matrix;
int tmp;
scanf("%d",&N); tmp=(int)sqrt(N*1.0f+0.5);
while(N%tmp!=){
tmp++;
}
m=max(tmp,N/tmp);
n=min(tmp,N/tmp); matrix=new int*[m];
for(int i=;i<m;i++)
matrix[i]=new int[n];
for(int i=;i<N;i++)
scanf("%d",&a[i]);
sort(a,a+N); int p;
int leftBound=,rightBound=n-,upBound=,downBound=m-;
int x=,y=;
int cnt=N;
if(n>)
p=RIGHT;
else
p=DOWN;
while(cnt){
matrix[y][x]=a[cnt-];
if(p==RIGHT){
x++;
if(x==rightBound){
upBound++;
p=DOWN;
}
}
else if(p==DOWN){
y++;
if(y==downBound){
rightBound--;
p=LEFT;
}
}
else if(p==LEFT){
x--;
if(x==leftBound){
downBound--;
p=UP;
}
}
else{
y--;
if(y==upBound){
leftBound++;
p=RIGHT;
}
}
cnt--;
}
for(int i=;i<m;i++){
for(int j=;j<n-;j++){
printf("%d ",matrix[i][j]);
}
printf("%d",matrix[i][n-]);
if(i<m-)
printf("\n");
}
return ;
}

PAT甲题题解-1105. Spiral Matrix (25)-(模拟顺时针矩阵)的更多相关文章

  1. PAT甲题题解-1016. Phone Bills (25)-模拟、排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  2. PAT甲题题解-1051. Pop Sequence (25)-堆栈

    将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...

  3. PAT甲题题解-1059. Prime Factors (25)-素数筛选法

    用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...

  4. PAT甲题题解-1101. Quick Sort (25)-大水题

    快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ...

  5. PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)

    如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...

  6. PAT甲题题解-1130. Infix Expression (25)-中序遍历

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  7. PAT甲题题解-1129. Recommendation System (25)-排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  8. PAT甲题题解-1021. Deepest Root (25)-dfs+并查集

    dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...

  9. PAT甲题题解-1024. Palindromic Number (25)-大数运算

    大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...

随机推荐

  1. python 使用csv 文件写入 出现多余空行数据解决方案

    因为csv.writerow() 方法会造成读取时每条数据后多一条空数据 解决方案如下: 分为两种情况 python2 和 python3 先说python2版本 with open('xxx.csv ...

  2. 详解Web请求中的DNS域名解析

    当我们打开浏览器,输入一个URL去请求我们需要的资源,但是URL是需要解析成对应的IP地址才能与远程主机建立连接,如何将URL解析成IP就是DNS的工作范畴,即使作为开发人员,这个过程我们也感觉不到, ...

  3. Swift: Associated Types--为什么协议使用关联类型而不是泛型

    关联类型的形式为类型的引用进而进行约束提供了条件: 同时能够简化语法形式. Swift: Associated Types http://www.russbishop.net/swift-associ ...

  4. 使用vs2010编译lua5.1源代码生成lua.lib

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangbin_jxust/article/details/37557807 一.打开vs2010 二 ...

  5. Volley源码分析(五)Volley源码总结篇

    volley关键的代码这里已经分析完了,下面梳理一下完整的Volley流程 Volley的使用从构造Request对象开始,Volley默认提供了四种request的实现,StringRequest, ...

  6. vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用

    Docker vagrant提供了使用Docker作为provider(其他的provider有virtualBox.VMware\hyper-V等)的开箱即用支持.这允许你的开发环境由Docker容 ...

  7. MetaMask/Website

    https://github.com/MetaMask/Website 将这个包下载下来之后运行npm install出现下面的问题 gyp: No Xcode or CLT version dete ...

  8. 如何快速找到某个研究领域的所有SCI期刊

    https://www.toutiao.com/a6624332265285485060/?tt_from=dingtalk&utm_campaign=client_share&tim ...

  9. gettimeofday()函数来得到时间

    gettimeofday()函数的使用方法: 1.简介: 在C语言中可以使用函数gettimeofday()函数来得到时间.它的精度可以达到微妙 2.函数原型: #include<sys/tim ...

  10. CSS3页面布局方案

    CSS3页面布局方案 Web页面中的布局,在css3之前,主要使用float属性或者position属性进行页面中的简单布局,但是使用它们也存在一些缺点,比如两栏或者多栏中如果元素的内容高度不一致,则 ...