PATB 1050. 螺旋矩阵(25)
2017-06-28 00:00
225 查看
1050. 螺旋矩阵(25)
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; #include <vector> int res[11111][11111]; int cmp(int a, int b) { return a > b; } int main(int argc, char *argv[]) { int N, m, n = 1; scanf("%d", &N); for (n = sqrt(N); n >= 1; n--) { if (N%n == 0) { m = N / n; break; } } vector<int> v(N); for (int i = 0; i < N; i++) { scanf("%d", &v[i]); } //由大到小排序 sort(v.begin(), v.end(), cmp); //填入数组m*n int i = 0, j = -1, k = 0; while (k < N) { //右 while (i < m && j + 1 < n && !res[i][j + 1]) { res[i][++j] = v[k++]; }//下 while (i + 1 < m && j < n && !res[i + 1][j]) res[++i][j] = v[k++]; //左 while (i >= 0 && j - 1 >= 0 && !res[i][j - 1]) res[i][--j] = v[k++]; //上 while (i - 1 >= 0 && j >= 0 && !res[i - 1][j]) res[--i][j] = v[k++]; } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { printf("%d%c", res[i][j], j == n - 1 ? '\n' : ' '); } } return 0; }
相关文章推荐
- 1050. 螺旋矩阵(25)-浙大PAT乙级真题java实现
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- PAT 乙级1050. 螺旋矩阵(25)&&蛇形填数&&51Nod 1283 最小的周长
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- PAT (Basic Level) Practise (中文) 1050. 螺旋矩阵(25)
- PAT-乙级-1050. 螺旋矩阵(25)
- pat乙级真题 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- PAT 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)