1105 Spiral Matrix(二刷)

英文题目:1105 Spiral Matrix

中文题目:1050 螺旋矩阵

 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 #include<cmath>
 5 using namespace std;
 6 
 7 int matrix[10010][110] = {0};
 8 int main() {
 9     int N;
10     cin>>N;
11     vector<int> v(N);
12     for(int i = 0; i < N; ++i) cin>>v[i];
13     sort(v.begin(),v.end(),greater<int>());
14     int m,n;
15     for(int i = 1; i <= sqrt(N); ++i) {
16         if(N % i == 0) {
17             n = i;
18             m = N/n;
19         }
20     }
21     int num = 0,i = 0,j = -1;
22     while(num < N) {
23         while(j+1 < n && matrix[i][j+1] == 0)
24             matrix[i][++j] = v[num++];
25         while(i+1 < m && matrix[i+1][j] == 0)
26             matrix[++i][j] = v[num++];
27         while(j-1 >= 0 && matrix[i][j-1] == 0)
28             matrix[i][--j] = v[num++];
29         while(i-1 >= 0 && matrix[i-1][j] == 0)
30             matrix[--i][j] = v[num++];
31     }
32     for(int i = 0; i < m; ++i) {
33         for(int j = 0; j < n; ++j) {
34             if(j > 0) printf(" ");
35             printf("%d",matrix[i][j]);
36         }
37         printf("\n");
38     }
39     return 0;
40 }

 

posted @ 2020-03-27 12:59  tangq123  阅读(149)  评论(0编辑  收藏  举报