题解 | #回型矩阵#

回型矩阵

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

#include <stdio.h>
int main() {
    int arr[20][20], n;
    scanf("%d", &n);
    int up = 0, left = 0, right = n - 1, down = n - 1;
    int x = 1;
    while (x <= n * n)
    {
        for (int i = left; i <= right; i++)
        {
            arr[up][i] = x++;
        }
        up++;
        for (int i = up; i <= down; i++) 
        {
            arr[i][right] = x++;
        }
        right--;
        for(int i = right;i>=left;i--)
        {
           arr[down][i] = x++; 
        }
        down--;
        for(int i = down;i>=up;i--)
        {
            arr[i][left] = x++;
        }
        left++;
    }
    for(int i = 0;i < n;i++)
    {
        for(int j = 0;j<n;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
按上-右-下-左一圈再一圈的顺序给二维数组赋值,每次处理完一条边后要改变边界值的大小。最后打印 我带值进去进行运算
主要考察的就是对于边界情况的判断,需要建立 n * n 的矩阵 arr 存储值,并且声明一个变量 k ,随着循环自增,每次循环的 k 值存储在 arr 内,最后再将 arr 数组按行打印即可。 while 循环的终止条件即为 k > n * n,并且要注意四个 for 循环中,必须有两个 for 循环(分别为左右循环和上下循环)的终止条件取等号,目的是确保能够到达循环终止前最后一个会使边界重叠的位置。
全部评论
1 回复 分享
发布于 2024-11-15 23:21 安徽
很详细了哈哈哈
点赞 回复 分享
发布于 2022-10-23 12:44 安徽
爱了爱了,谢谢楼主
点赞 回复 分享
发布于 2023-01-07 11:22 湖北
认真!
点赞 回复 分享
发布于 2023-01-26 08:40 河北
牛逼,牛逼
点赞 回复 分享
发布于 2023-03-12 00:22 四川
点赞 回复 分享
发布于 2023-05-11 11:27 河北
666
点赞 回复 分享
发布于 2023-11-17 10:49 贵州
真用心了
点赞 回复 分享
发布于 2024-02-05 16:30 河北
博主牛逼
点赞 回复 分享
发布于 2024-04-26 20:45 广东

相关推荐

1个小白:可以考虑投一下字节
点赞 评论 收藏
分享
评论
90
8
分享

创作者周榜

更多
牛客网
牛客企业服务