美文网首页
1050 螺旋矩阵 (25 分)

1050 螺旋矩阵 (25 分)

作者: 79d12e22ec53 | 来源:发表于2019-05-19 15:35 被阅读0次
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int cmp(const void *a, const void *b)
{
    return *(int*)b - *(int*)a;
}

int main()
{
    int N, a[10001], i=0, j=0, m, n, left,right,up,down;
    scanf("%d", &N);
    n = sqrt(N);//lie
    m = N / n;//hang

    for(i=0; i<N; i++)
        scanf("%d", &a[i]);

    qsort(a, N, sizeof(a[0]), cmp);

    int next=0, count=1;
    int b[101][101] = {0};

    i=0,j=-1,left=0,right=n-1,up=0,down=m-1;
    while(next < N)
    {

        while(count%4 == 1 && j<right)
        {
            b[i][++j] = a[next++];
        }
        count++;
        right--;

        while(count%4 == 2 && i<down)
        {
            //i++;
            b[++i][j] = a[next++];
        }
        count++;
        down--;

        while(count%4 == 3 && j>left)
        {
            //j--;
            b[i][--j] = a[next++];

        }
        count++;
        left++;

        up++;
        while(count%4 == 0 && i>up)
        {
            //i--;
            b[--i][j] = a[next++];
        }
        count++;

    }

    for(i=0; i<m; i++)//输出
    {
        printf("%d", b[i][0]);
        for(j=1; j<n; j++)
        {
            printf(" %d", b[i][j]);
        }
            printf("\n");
    }

}

相关文章

网友评论

      本文标题:1050 螺旋矩阵 (25 分)

      本文链接:https://www.haomeiwen.com/subject/uhlqzqtx.html