题解 | #蛇形矩阵#

蛇形矩阵

https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1

#include <stdio.h>

int main() 
{
    int n=0,count=2,row=0,col=0,time=0;
    int arr[1000][1000]={0};
    scanf("%d",&n);
    arr[0][0]=1;

    while(count<=n*n)
    {
        if(col<n-1)//在行小于n之前列加一(1->2,6->7)
        {
           col++; 
           time++;//在小于n之前,斜线走的次数递增。
        }    //大于n后向下走,行加一  (13->14) 
        else
        {
            row++;
            time--;//在大于n后,斜线的次数递减。
        }
        arr[row][col]=count++;
        for(int i=0;i<time;i++)//斜下走
        {
            row++;
            col--;
            arr[row][col]=count++;
        }
        if(row<n-1)//原理同上。
        {
            time++;
            row++;
        }
        else 
        {
            time--;
            col++;
        }
        arr[row][col]=count++;
        for(int i=0;i<time;i++)//斜上走
        {
            row--;
            col++;
            arr[row][col]=count++;
        } 
    }




    for(int i=0;i<n;i++)//打印
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务