题解 | #蛇形矩阵#
蛇形矩阵
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; }