PAT 1050.螺旋矩阵(25)
来源:互联网 发布:网络拓扑 软件 编辑:程序博客网 时间:2024/06/06 06:56
#include <stdio.h> #include <iostream> #include <vector> #include <algorithm> #include<string>#include<string.h>#include<cmath>using namespace std;bool cmd(int a, int b){return a > b;}int a[100000000], num[10000][10000];int main(){int n;cin >> n;for (int i = 0; i < n; i++){cin >> a[i];}sort(a, a + n, cmd);int minm = n, minn = 1;for (int i = n; i >= 1; i--){if (n%i == 0){if (i >= n / i){if (i - n / i < minm - minn){minm = i;minn = n / i;}}}}int rightz = 0, righty = minn, z = 0, downs = 1, downx = minm, leftz = 0, lefty = minn - 2, upx = minm - 2, ups = 1;int right = 0, left = minm - 1, up = 0, down = minn - 1;while (z != n){for (int i = rightz; i < righty; i++){if (z == n) break;num[right][i] = a[z++];}right++; rightz++; righty--;for (int i = downs; i < downx; i++){if (z == n) break;num[i][down] = a[z++];}down--; downs++; downx--;for (int i = lefty; i >= leftz; i--){if (z == n) break;num[left][i] = a[z++];}left--; lefty--; leftz++;for (int i = upx; i >= ups; i--){if (z == n) break;num[i][up] = a[z++];}up++; upx--; ups++;}for (int i = 0; i < minm; i++){for (int j = 0; j < minn; j++){cout << num[i][j];if (j != minn - 1) cout << " ";}if (i != minm - 1) cout << endl;}}
0 0
- PAT 1050. 螺旋矩阵(25)
- PAT 1050. 螺旋矩阵(25)
- PAT 1050.螺旋矩阵(25)
- PAT 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25) PAT
- pat 1050. 螺旋矩阵
- PAT螺旋矩阵(25)
- C++ - PAT - 1050. 螺旋矩阵(25)
- PAT BASIC LEVEL 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)-PAT乙级
- PAT-A-1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- [PAT乙级]1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- PAT乙级1050. 螺旋矩阵(25)
- pat 乙级 1050. 螺旋矩阵(25)
- PAT刷题:1050. 螺旋矩阵(25)
- Android程序安装后图标不显示
- HDU 5438Ponds
- Android视图的绘制流程(下)——View的Layout与Draw过程
- 命令模式
- 关于中值滤波算法,以及C语言实现
- PAT 1050.螺旋矩阵(25)
- 开发故事中的各种小虫(持续更新)
- 提高PHP代码执行效率小结
- js获取客户端IP及地理位置
- HDU 5442Favorite Donut 后缀数组
- Remove Duplicates from Sorted List
- LINUX中驱动异步通知应用程序的方法
- 数据库操作中 pstmt.setString(1,id) ; 是什么意思 那个“1”指什么?
- List和ArrayList的区别