【题解】Z字型扫描

题面

题目传送门

前言

好理解的题面+好看的数据范围=恶心的码量

这种题怎么会整这么多分讨啊!

正文

把矩阵拆成左上角,右下角两个三角形分开模拟

每个三角形中,分类讨论奇数斜行与偶数斜行不同的方向

注意奇数阶矩阵与偶数阶矩阵不同即可

代码

#include<iostream>
using namespace std;
const int maxn=512;
int a[maxn][maxn]; 
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
    	for(int j=0;j<n;j++){
    		cin>>a[i][j];
		} 
	}
	int x=0,y=0;
	for(int i=0;i<n;i++){
		if(i&1){
			for(int j=0;j<i;j++){
				cout<<a[x++][y--]<<' ';
			}
			cout<<a[x++][y]<<' ';
		}else{
			for(int j=0;j<i;j++){
				cout<<a[x--][y++]<<' ';
			}
			cout<<a[x][y++]<<' ';
		}
	}
    if(n&1){
    	y--;
    	x++;
	}else{
		y++;
		x--;
	}
	for(int i=n-2;i>0;i--){
		if(i&1){
            for(int j=0;j<i;j++){
            	cout<<a[x++][y--]<<' ';
			}                
            cout<<a[x][y++]<<' ';
        }else{
            for(int j=0;j<i;j++){
            	cout<<a[x--][y++]<<' ';
			}
            cout<<a[x++][y]<<' ';
        }
	}
    if(n!=1){
    	cout<<a[n-1][n-1]<<endl;
	}
    return 0;
}

后记

下班力!

完结撒花!

posted @ 2024-11-21 19:58  sunxuhetai  阅读(19)  评论(1)    收藏  举报