码迷,mamicode.com
首页 > 其他好文 > 详细

1050. 螺旋矩阵(25)

时间:2017-07-23 00:54:06      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:etc   log   min   scanf   sort   bsp   顺序   for   math   

本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。

输入格式:

输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过104,相邻数字以空格分隔。

输出格式:

输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔,行末不得有多余空格。

输入样例:

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

code:
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 #include <string.h>
 5 
 6 int cmp(const void *a,const void *b)
 7 {
 8     return *(int *)b-*(int *)a;
 9 }
10 
11 int main()
12 {
13     int n,i,j,k,h,l,min;
14     int a[10001];
15     scanf("%d",&n);
16     getchar();
17     for(i = 0;i < n;i++)
18     {
19         scanf("%d",&a[i]);        
20     }
21     qsort(a,n,sizeof(a[0]),cmp);
22     h = sqrt(n);//3
23     min = n;
24     for(i = 1;i <= sqrt(n);i++)
25     {
26         if(n%i == 0)
27             h = i;
28     }//找到满足条件 差最小的数 
29     l = n/h;//4
30     int b[l][h];  //  4 3
31 //    printf("%d %d",l,h);
32     memset(b,0,sizeof(b));
33     i  = 0,j = 0,k = 0;
34     b[0][0] = a[k++];//先对第一个数赋值,不然后面不好计算 
35     while(k < n)
36     {
37         while(j < h-1 && b[i][j+1] == 0)
38             b[i][++j] = a[k++];//j = 2,i = 0
39         while(i < l-1 && b[i+1][j] == 0)
40             b[++i][j] = a[k++];//i = 3,j = 2
41         while(j > 0 && b[i][j-1] == 0)
42             b[i][--j] = a[k++];//i = 3,j = 0 
43         while(i > 0 && b[i-1][j] == 0)
44             b[--i][j] = a[k++];
45     }
46     for(i = 0;i < l;i++)
47     {
48         for(j = 0;j < h;j++)
49         {
50             if(j != 0)
51                 printf(" ");
52             printf("%d",b[i][j]);    
53         }
54         printf("\n");
55     }
56     
57     return 0;     
58 } 

 

1050. 螺旋矩阵(25)

标签:etc   log   min   scanf   sort   bsp   顺序   for   math   

原文地址:http://www.cnblogs.com/huyuan1004/p/7223192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!