标签:nbsp test https pen cti color ecif set attention
This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasing order. A spiral matrix is filled in from the first element at the upper-left corner, then move in a clockwise spiral. The matrix has m rows and n columns, where m and n satisfy the following: m×nmust be equal to N; m≥n; and m−n is the minimum of all the possible values.
Each input file contains one test case. For each case, the first line gives a positive integer N. Then the next line contains N positive integers to be filled into the spiral matrix. All the numbers are no more than 1. The numbers in a line are separated by spaces.
For each test case, output the resulting matrix in m lines, each contains n numbers. There must be exactly 1 space between two adjacent numbers, and no extra space at the end of each line.
12 37 76 20 98 76 42 53 95 60 81 58 93
98 95 93 42 37 81 53 20 76 58 60 76
1 /* 2 Data: 2019-06-08 16:12:47 3 Problem: PAT_A1105#Spiral Matrix 4 AC: 01:05:29 5 6 题目大意: 7 序列从大到小,顺时针放入矩阵中 8 */ 9 #include<functional> 10 #include<cstdio> 11 #include<cmath> 12 #include<algorithm> 13 using namespace std; 14 const int M=1e4+10; 15 int matrix[M], a[M]; 16 17 int main() 18 { 19 #ifdef ONLINE_JUDGE 20 #else 21 freopen("Test.txt", "r", stdin); 22 #endif 23 24 int N,n,m; 25 scanf("%d", &N); 26 for(int i=0; i<N; i++) 27 scanf("%d", &a[i]); 28 for(int i=(int)sqrt((double)N); i>=1; i--) 29 { 30 if(N%i == 0) 31 { 32 n = i; 33 m = N/i; 34 break; 35 } 36 } 37 sort(a,a+N,greater<int>()); 38 fill(matrix,matrix+M,0); 39 int pt=0,c=1,r=1,R=m,C=n; 40 while(pt < N) 41 { 42 for(int i=c; i<=n && pt<N; i++) 43 matrix[C*r-2+i-1]=a[pt++]; 44 r++; 45 for(int i=r; i<=m && pt<N; i++) 46 matrix[C*i-2+n-1]=a[pt++]; 47 n--; 48 for(int i=n; i>=c && pt<N; i--) 49 matrix[C*m-2+i-1]=a[pt++]; 50 m--; 51 for(int i=m; i>=r && pt<N; i--) 52 matrix[C*i-2+c-1]=a[pt++]; 53 c++; 54 } 55 for(int i=1; i<=R; i++) 56 for(int j=1; j<=C; j++) 57 printf("%d%c", matrix[C*i-2+j-1], j==C?‘\n‘:‘ ‘); 58 59 60 return 0; 61 }
标签:nbsp test https pen cti color ecif set attention
原文地址:https://www.cnblogs.com/blue-lin/p/10991319.html