题解 | #蛇形矩阵#

蛇形矩阵

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

#include <stdio.h>
int main(){
    int n, start, count = 0;
    int arr[1000][1000] = {0};
    scanf("%d",&n);
    //i代表每轮对角线方向循环时行列坐标的和
    for(int i = 0; i < 2 * n - 1; i++){
        //关于start的含义,以和为偶对角线为例说明
        //i < n - 1 时,纵坐标起始都为零;
        //i >= n - 1 时,横坐标起始为n-1,故有:
        //纵坐标起始都为 i - n - 1;
        if(i < (n - 1)){
            start = 0;
        } else {
            start = i - n + 1;
        }
        //对于每一条对角线上的循环,以纵坐标的变化来研究
        for(int j = start; j <= i - start; j++){
            count++;
            if(i % 2 == 0){
                //斜向上,纵坐标增加
                arr[i - j][j] = count;
            } else {
                //坐下,横坐标增加
                arr[j][i - j] = count;
            }
        }
    }
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

全部评论

相关推荐

04-17 10:16
门头沟学院 Java
不河狸啊:为什么我的是已送达,连已读都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务