PAT(Basic Level)_1050_螺旋矩阵
来源:互联网 发布:分水岭算法 编辑:程序博客网 时间:2024/05/16 23:56
#include<cstdio>#include<cmath>#include<algorithm>#include<functional>using namespace std;int main(){ int N,m,n,nums[10000]; scanf("%d",&N); for(int i=0;i<N;i++){ scanf("%d",nums+i); } sort(nums,nums+N,greater<int>()); //for(int i=0;i<N;i++) printf("%d ",nums[i]); for(int i=sqrt(N);i>0;i--){ if(N%i==0){ n=i; m=N/n; break; } } //printf("%d %d",m,n); int **matrix=new int*[m]; for(int i=0;i<m;i++){ matrix[i]=new int[n]; } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ matrix[i][j]=0; } } int i=0,dir=0,x=0,y=0; while(i<N){ if(!matrix[x][y]) matrix[x][y]=nums[i++]; switch(dir){ case 0: if(y+1<n && !matrix[x][y+1]) y++; else dir=1; break; case 1: if(x+1<m && !matrix[x+1][y]) x++; else dir=2; break; case 2: if(y-1>=0 && !matrix[x][y-1]) y--; else dir=3; break; case 3: if(x-1>=0 && !matrix[x-1][y]) x--; else dir=0; break; } } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ printf("%d",matrix[i][j]); if(j==n-1) putchar('\n'); else putchar(' '); } } for(int i=0;i<m;i++){ delete[]matrix[i]; } delete[]matrix; return 0;}
阅读全文
0 0
- PAT(Basic Level)_1050_螺旋矩阵
- PAT BASIC LEVEL 1050. 螺旋矩阵(25)
- PAT (Basic Level) Practise (中文)1050. 螺旋矩阵(25)
- PAT (Basic Level) Practise (中文) 1050. 螺旋矩阵(25)
- PAT (Basic Level) Practise (中文)1050. 螺旋矩阵(25)
- PAT Basic 1050. 螺旋矩阵(25)(C语言实现)
- PAT螺旋矩阵(25)
- PAT 1050螺旋矩阵
- pat 1050. 螺旋矩阵
- PAT (Basic Level) Practise
- pat basic level 1016
- pat basic level 1018
- pat basic level 1019
- PAT(basic level)题解
- pat(basic level) 1003
- PAT-basic level-1001
- PAT-basic level-1002
- PAT-basic level-1004
- KotLin的认识(一)
- CCF201412-3 集合竞价 日常暴力带BUG修复
- Zcash钱包(ZEC钱包)官方客户端常见命令实测(一)
- MXNet应用之一:Large Scale Image Classification
- JavaScript Date 对象 详解
- PAT(Basic Level)_1050_螺旋矩阵
- Test run failed: Unable to find instrumentation target package: android.support.v7.appcompat
- c++ STL中容器迭代器失效
- Java数据结构与算法
- Android优化方案汇总
- 工薪阶层如何经营自己?
- java数据类型与基础
- Tomcat Service.xml配置详解及优化
- NTFS读写软件——Paragon NTFS For Mac