题解 | #蛇形矩阵#

蛇形矩阵

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")

全部评论

相关推荐

美团 客服平台 薪资应该是后端算高的了,我们姑且称为nk了,给3w签字费
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务