题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include <iostream> using namespace std; int array[1001][1001]={0}; int main() { int n; cin >> n; int i=0, j=0; if(n%2==0){ for(int k=1; k<=n*n; k++){ if(i==0 && j<n-1 && j%2==0) array[i][j++]=k; else if(i==0 && j<n-1 && j%2==1) array[i++][j--]=k; else if(j==0 && i<n-1 && i%2==1) array[i++][j]=k; else if(j==0 && i<n-1 && i%2==0) array[i--][j++]=k; else if(i<n-1 && j<n-1 && (i+j)%2==0) array[i--][j++]=k; else if(i<n-1 && j<n-1 && (i+j)%2==1) array[i++][j--]=k; else if(i==n-1 && j%2==0) array[i][j++]=k; else if(i==n-1 && j%2==1) array[i--][j++]=k; else if(j==n-1 && i%2==1) array[i++][j]=k; else if(j==n-1 && i%2==0) array[i++][j--]=k; } } else{ for(int k=1; k<=n*n; k++){ if(i==0 && j<n-1 && j%2==0) array[i][j++]=k; else if(i==0 && j<n-1 && j%2==1) array[i++][j--]=k; else if(j==0 && i<n-1 && i%2==1) array[i++][j]=k; else if(j==0 && i<n-1 && i%2==0) array[i--][j++]=k; else if(i<n-1 && j<n-1 && (i+j)%2==0) array[i--][j++]=k; else if(i<n-1 && j<n-1 && (i+j)%2==1) array[i++][j--]=k; else if(i==n-1 && j%2==1) array[i][j++]=k; else if(i==n-1 && j%2==0) array[i--][j++]=k; else if(j==n-1 && i%2==0) array[i++][j]=k; else if(j==n-1 && i%2==1) array[i++][j--]=k; } } for(int p=0; p<n; p++){ for(int q=0; q<n; q++) cout << array[p][q] << " "; cout << endl; } } // 64 位输出请用 printf("%lld")