题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
#include <stdio.h> #include <stdlib.h> int main() { int n; int matrix[100][100] = {0}; int preFirstColi = 0; //存储第一列的上一次更新的的i,作为起始位置 scanf("%d", &n); for(int j=0, i=0, cur=1; ; cur++){//ij为矩阵的索引, cur为递增的自然数 matrix[i][j] = cur; //将cur放入矩阵, if(i==0){ //当递增到第一行 if(j == n-1) //判断是否已经到目标的n次,如是则退出 break; preFirstColi++; //不是则更新起始位置 i=preFirstColi; //更新ij j=0; }else{ //普通递增,则i-1, j+1 i--; j++; } } for(int i=0; i<100; i++){ //打印 for(int j=0; j<100; j++){ if(matrix[i][j]==0) break; printf("%d ", matrix[i][j]); } printf("\n"); } return 0; }