PAT甲题题解-1105. Spiral Matrix (25)-(模拟顺时针矩阵)
题意:给定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)-(模拟顺时针矩阵)的更多相关文章
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1051. Pop Sequence (25)-堆栈
将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...
- PAT甲题题解-1059. Prime Factors (25)-素数筛选法
用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...
- PAT甲题题解-1101. Quick Sort (25)-大水题
快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ...
- PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)
如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...
- PAT甲题题解-1130. Infix Expression (25)-中序遍历
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1129. Recommendation System (25)-排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1021. Deepest Root (25)-dfs+并查集
dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...
- PAT甲题题解-1024. Palindromic Number (25)-大数运算
大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...
随机推荐
- SQLServer 删除表中的重复数据
create table Student( ID varchar(10) not null, Name varchar(10) not null, ); insert in ...
- Beta阶段第五次冲刺
Beta阶段第五次冲刺 严格按照Git标准来,组员有上传Git的才有贡献分没有的为0 代码签入图 1.part1 -站立式会议照片 2.part2 -项目燃尽图 3.part3 -项目进展 1.正在进 ...
- rename 表
----执行过程 TS.TEST ---RENAME INDEX(索引) ALTER INDEX TS.IDX1_TEST RENAME TO IDX1_TEST_BAK; ALTER INDEX T ...
- Kubernetes1.91(K8s)安装部署过程(四)--Master节点安装
再次明确下架构: 三台虚拟机 centos 7.4系统,docker为17版本,ip为10.10.90.105到107,其中105位master,接下来的master相关组件安装到此机器上. etc ...
- python利用smtplib和MIMETYPE发送邮件
# -*- coding:utf- -*- import smtplib from email.mime.text import MIMEText sender = '你的发送邮件' my_pass= ...
- Python2.7-csv
csv模块,用于读写 csv 文件,常用 reader 和 writer 对象进行操作 1.模块的类 1.1 Dialect 对象,设置 csv 文件的各种格式,包括分隔符,引用符,转义符等 1.1. ...
- day35
今日内容: 1.进程间互相通信(IPC机制) 2.生产者消费者模型 3.线程理论 4.线程开启的两种方式 5.线程相关属性方法 6.守护线程 7.线程互斥锁 1.进程间相互通信(IPC机制) 主要是一 ...
- jqgrid 对编辑行填写的内容做格式验证
有时,我们需要在基于jqgrid表格编辑行的单元格做规范验证.jqgrid提供有支持,通过设置字段的editrules属性来约束格式. 约束方式: 1.内置的约束参数 (required: true, ...
- js 按指定属性给对象数组排序(json数组)
有时,我们有一个json对象的数组集合,如何按指定对象属性来进行排序? //fieldArr为一个json对象数组 var fieldArr = fieldArr.sort(compare(" ...
- IDEA插件——lombok的简单使用
一.介绍 lombok是一个可以通过注解来简化许多繁琐的get.set以及构造函数等的工具.它可以让我们在代码编写的时候省去代码,而在编译生成的字节码中生成相应的字节码! 官网:https://pro ...