PTA 1050 螺旋矩阵

#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std; 

bool cmp(int a,int b){
 return a>b;
}

int main(){
 int n1;
 scanf("%d",&n1);
 int m,n;
 for(int i=sqrt(n1);i>=0;i--){
  if(n1%i==0){
   m=max(i,n1/i);
   n=min(i,n1/i);
   break;
  }
 }
// cout<<m<<n;
 
 int a1[100000];
 for(int i=0;i<n1;i++)
 scanf("%d",&a1[i]);
 sort(a1,a1+n1,cmp);
// for(int i=0;i<n1;i++)
// printf("%d",a1[i]);
 
 vector<vector<int> > a(m,vector<int>(n));
 int count=1;
 int k=0;
 int t=0,i,j;
 int c=m/2+m%2;
 for(int l=0;l<c;l++){
  for(int j=l;j<=n-1-l&&k<=n1-1;j++) a[l][j]=a1[k++];
  for(int j=l+1;j<=m-2-l&&k<=n1-1;j++) a[j][n-1-l]=a1[k++];
  for(int j=n-1-l;j>=l&&k<=n1-1;j--) a[m-1-l][j]=a1[k++];
  for(int j=m-2-l;j>=l+1&&k<=n1-1;j--) a[j][l]=a1[k++];
 }
 for(int i=0;i<m;i++){
  for(int j=0;j<n;j++){
   printf("%d",a[i][j]);
   if(j!=n-1) printf(" ");
  }
  if(i!=m-1) printf("\n");
 }
 } 





知识点:

 1. 动态内存:vector二维向量:定义:vector<vector<int> > b(m,vector<int>(n)):定义一个m*n大小的vector容器。另外也可以动态变量(现在还不会,没看懂),也可以在全局变量定义一个很大的数组。
 2. 关于找m,n:从sqrt(N)向前找。
 3. 关于填充方法:[矩形法](https://www.liuchuo.net/archives/2070),寻找四个角的规律。[碰壁法](http://www.cnblogs.com/zhien-aa/p/5671115.html),遇到已经填充的格子改变方向。
 4. 大神博客:https://me.csdn.net/oliver__lew。
 5. 错误分析:一开始想用模拟,结果模拟错误。

全部评论

相关推荐

评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
440737次浏览 4493人参与
# 春招别灰心,我们一人来一句鼓励 #
41503次浏览 524人参与
# 北方华创开奖 #
107319次浏览 599人参与
# 地方国企笔面经互助 #
7930次浏览 18人参与
# 同bg的你秋招战况如何? #
75684次浏览 552人参与
# 虾皮求职进展汇总 #
114355次浏览 884人参与
# 阿里云管培生offer #
119906次浏览 2219人参与
# 实习,投递多份简历没人回复怎么办 #
2454094次浏览 34848人参与
# 实习必须要去大厂吗? #
55687次浏览 960人参与
# 提前批简历挂麻了怎么办 #
149836次浏览 1977人参与
# 投递实习岗位前的准备 #
1195731次浏览 18546人参与
# 你投递的公司有几家约面了? #
33181次浏览 188人参与
# 双非本科求职如何逆袭 #
661934次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4734次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157604次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11381次浏览 271人参与
# 发工资后,你做的第一件事是什么 #
12431次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35621次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20091次浏览 240人参与
# 我的上岸简历长这样 #
451933次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39241次浏览 314人参与
# 非技术岗是怎么找实习的 #
155852次浏览 2120人参与
牛客网
牛客企业服务