#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <math.h>
bool cmp(int a,int b){
return a>b;
}
int main()
{
int num;
cin >> num;
int a;
int m,n;
m = 1 ;
for(int i =2;i<=sqrt(num);i++){
if(num%i== 0)
m = i;
}
n = num/m;
//cout<<"n="<<n<<" m="<<m;
int aa[n][m];
vector<int>v;
cin >> a;
v.push_back(a);
while(getchar() != '\n'){
cin >> a;
v.push_back(a);
}
quicksort(v,0,v.size()-1);
//sort(v.begin(), v.end(),cmp);
int i =0,l_row = 0 ,l_column = 0, r_row = n-1,r_column = m-1;
while(i<num){
//circal(v,aa,s,t,p, q,i,n,m,flag);
if (l_row == r_row && l_column == r_column){
aa[l_row][l_column] = v[i++];//
}
else if(l_row == r_row){
while(l_column<=r_column){
aa[l_row][l_column++] = v[i++];
}
}
else if(l_column == r_column){
while(l_row<=r_row){
aa[l_row++][l_column] = v[i++];
}
}
else {
int m, n, p, q;
m = l_row;
n = l_column;
p = r_row;
q = r_column;
while (n < r_column) {
aa[m][n++] = v[i++];
}
while (m < r_row) {
aa[m++][n] = v[i++];
}
while (l_column < q) {
aa[r_row][q--] = v[i++];
}
while (p > l_row) {
aa[p--][l_column] = v[i++];
}
}
l_row +=1;
l_column +=1;
r_row -=1;
r_column -=1;
}
for(int i = 0;i<m;i++){
if(i == 0){
cout<<aa[0][i];
}
else{
cout<<" "<<aa[0][i];
}
}
if(n>1){
for(int j = 1;j<n;j++){
cout<<endl;
for(int i = 0;i<m;i++){
if(i == 0){
cout<<aa[j][i];
}
else{
cout<<" "<<aa[j][i];
}
}
}
}
return 0;
}
PAT乙级1050
猜你喜欢
转载自blog.csdn.net/qq_42673507/article/details/85247699
今日推荐
周排行