【PAT】1105. Spiral Matrix
来源:互联网 发布:先进先出算法流程图 编辑:程序博客网 时间:2024/06/01 08:57
考查点:模拟题,蛇形填数
思路:这里经过四个循环后除了更新边界外还必须i++,j++,进入内层,以后模拟时不能只停在一个循环,应该第二层循环,第二是中间数的处理,对于正方形中间数必须在过四个循环之后单独处理,即在最后赋值给中间位置
#define LOCAL#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#define FOR(i, x, y) for(int i = x; i <= y; i++)#define rFOR(i, x, y) for(int i = x; i >= y; i--)#define MAXN 10010#define oo 0x3f3f3f3fusing namespace std;int a[MAXN];int ans[MAXN][MAXN];bool cmp(int a,int b){ return a>b;}int main(){ #ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout); #endif // LOCAL int N; cin>>N; FOR(i,0,N-1) scanf("%d",&a[i]); if(N==1){ printf("%d",a[0]);return 0; } sort(a,a+N,cmp); int n,m; m=(int)ceil(sqrt(1.0*N)); while(N%m!=0){ m++; } n=N/m; int cnt=0; int i=0,j=0; int L=1,R=n-1,U=1,D=m-1; while(cnt<N){ while(cnt<N&&j<R){ ans[i][j++]=a[cnt++]; } R--; while(cnt<N&&i<D){ ans[i++][j]=a[cnt++]; } D--; while(cnt<N&&j>=L){ ans[i][j--]=a[cnt++]; } L++; while(cnt<N&&i>=U){ ans[i--][j]=a[cnt++]; } U++; j++; i++; if(cnt==N-1)ans[i][j]=a[cnt++]; } FOR(i,0,m-1) FOR(j,0,n-1) { printf("%d",ans[i][j]); if(j<n-1){ printf(" "); }else printf("\n"); } return 0;}
0 0
- 【PAT】1105. Spiral Matrix
- 【PAT】1105. Spiral Matrix (25)
- PAT 1105. Spiral Matrix (25)
- [pat]1105. Spiral Matrix (25)
- PAT--1105. Spiral Matrix (25)
- PAT 甲级:1105. Spiral Matrix
- PAT 1105. Spiral Matrix (25)
- pat 1105. Spiral Matrix (25)
- PAT 1105. Spiral Matrix (螺旋输出)
- PAT A 1105. Spiral Matrix (25)
- 【PAT】【Advanced Level】1105. Spiral Matrix (25)
- Pat(A) 1105. Spiral Matrix (25)
- PAT 甲级 1105. Spiral Matrix (25)
- pat-a1105. Spiral Matrix (25)
- 1105. Spiral Matrix (25)-PAT甲级真题
- [转]PAT甲级练习1105. Spiral Matrix (25)
- 1105. Spiral Matrix (25)
- 1105. Spiral Matrix (25)
- Java23种设计模式:单例模式(一)
- 实现一个双缓冲队列
- 什么是光栅显示
- Fork/Join框架
- 从任意网页上摘取酷炫Jquery效果为自己使用的方法
- 【PAT】1105. Spiral Matrix
- 数组与指针
- Java 引用 WeakReference
- 整理最全的“大数据”学习资源
- Sql Server 第一节课笔记(2.20)
- Google推荐的图片加载库Glide介绍
- MFC 调用 printf 输出
- xcode7升级xcode8会出现的问题
- 《Android群英传》阅读笔记——adb命令使用技巧