题解 | 回型矩阵

回型矩阵

https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343

#include <stdio.h>

int main() {
    int n;
    scanf("%d",&n);
    int arr[19][19] = {0};
    int left = 0;
    int right = n - 1;
    int top = 0;
    int bottom  = n -1 ;
    int num = 1;
    while(top <= bottom&&left <= right)
    {
        //从左到右
        for(int i = left ; i <= right ; i++)
        {
            arr[top][i] = num++;
        }
        top++;
       // 从上到下
       if(left <= right)
       {
        for(int j = top; j<=bottom;j++)
       {
        arr[j][right] = num++;
       }
       right--;
       }
       
       //从右到左
       if(left<=right)
       {
        for(int g = right;g >= left; g--)
       {
        arr[bottom][g] = num++;
       }
       bottom--;
       }
       //从下到上
      if(top <= bottom)
      {
         for(int l = bottom; l >=top;l--)
       {
        arr[l][left] = num++;
       }
       left++;
    }
      }
    for(int i = 0 ; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

主要还是设置边界,然后就是注意每次边界改变后要进行一个判断,防止越界

全部评论

相关推荐

求求给个offer我...:有这60不如v我50
点赞 评论 收藏
分享
淬月星辉:专利是什么?至少描述一下吧,然后把什么计算机二级、普通话这种拉低格调的证书删掉,不然hr以为你没东西写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务