题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include <stdio.h> int main() { int n; scanf("%d",&n); int arr[n][n]; int i=0,j=0; int p=1; arr[i][j]=p++; int flag=1; //等于1向右上角移动,等于-1向左下角移动 while(p<=n*n){ if(i==0&&j<n-1&&flag==1){//上边界 arr[i][++j]=p++; flag=-1; } else if(j==0&&i<n-1&&flag==-1){//左边界 arr[++i][j]=p++; flag=1; } else if(j==n-1&&flag==1){//右边界 arr[++i][j]=p++; flag=-1; } else if(i==n-1&&flag==-1){//下边界 arr[i][++j]=p++; flag=1; } else if(flag==1){ arr[--i][++j]=p++; } else{ arr[++i][--j]=p++; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%d ",arr[i][j]); } printf("\n"); } return 0; }