zoukankan      html  css  js  c++  java
  • 1050. 螺旋矩阵(25)

    本题要求将给定的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

    螺旋数组的意思是这样子

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include<string.h>
     4 #include<math.h>
     5 int ans[10002][10002];
     6 int a[10002];
     7 int cmp( const void *a, const void *b)
     8 {
     9     return *(int *)b -*( int *)a;
    10 }
    11 int main()
    12 {
    13     int N,r,c,min=999999;
    14     int i,j,k;
    15     scanf("%d",&N);
    16     for( i=0; i<N; i++)
    17         scanf("%d",&a[i]);
    18     qsort( a, N,sizeof( a[1]),cmp);  //降序排列
    19     int n = (int )sqrt(N*1.0);  
    20     for( i=1; i<=n; i++) //i循环表示列数,行数大于列数,只需循环N的开方次
    21     {
    22         if( N%i==0 && (N/i-i < min) )
    23         {
    24             min = N/i-i;
    25             r = i; //r列
    26         }
    27     }
    28     c = N/r;  //c行
    29     ans[0][0]=a[0];  //初始化第一位数
    30     i=j=k=0;
    31     while( k<N-1)
    32     {
    33         while( j+1<r && !ans[i][j+1]) //向左
    34             ans[i][++j] = a[++k];
    35         while( i+1<c && !ans[i+1][j]) //向下
    36             ans[++i][j] = a[++k];
    37         while(j-1>=0 && !ans[i][j-1])//向右
    38             ans[i][--j] = a[++k];
    39         while( i-1>=0 && !ans[i-1][j]) //向上
    40             ans[--i][j] = a[++k];
    41     }
    42     for( i=0; i<c; i++)
    43     {
    44         printf("%d",ans[i][0]);
    45         for( j=1; j<r; j++)
    46             printf(" %d",ans[i][j]);
    47         printf("
    ");
    48     }
    49     return 0;
    50 }
    
    
    在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
  • 相关阅读:
    [剑指Offer]判断一棵树为平衡二叉树(递归)
    [HDOJ]Coin Change(DP)
    01背包、完全背包
    [CodeForces_618C]Constellation
    [Codeforces_713A]Sonya and Queries
    C++位运算符
    [codeforces_597B] Restaurant(贪心)
    [LeetCode_98]Validate Binary Search Tree
    [LeetCode_96] Unique Binary Search Trees
    [LeetCode_105]Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/8520350.html
Copyright © 2011-2022 走看看