#include<iostream>#include<algorithm>#include<vector>#include<cmath>usingnamespace std;intmain(){int num, m, n;
cin >> num;for(n =(int)(sqrt(1.0*num)); n >=1; n--)if(num % n ==0)break;
m = num / n;
vector<int>v1(num);
vector<vector<int>>v(m, vector<int>(n,0));for(int i =0; i < num; i++) cin >> v1[i];sort(v1.begin(), v1.end());int level = m /2+ m %2;for(int l =0; l < level; l++){for(int i = l; i < n - l && num; i++)
v[l][i]= v1[--num];for(int i = l +1; i < m - l -1&& num; i++)
v[i][n - l -1]= v1[--num];for(int i = n - l -1; i > l -1&& num; i--)
v[m - l -1][i]= v1[--num];for(int i = m - l -2; i > l && num; i--)
v[i][l]= v1[--num];}for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(j) cout <<" ";
cout << v[i][j];}
cout << endl;}return0;}
1050 螺旋矩阵解题代码测试结果问题整理解题代码#include<iostream>#include<algorithm>#include<vector>#include<cmath>using namespace std;int main(){ int num, m, n; cin >> num; for (n = (int)(sqrt(1.0*num)); n >= 1; n--) if (num % n =