寒假每日一题打卡day37——AcWing 3208. Z字形扫描

在这里插入图片描述
在这里插入图片描述

AcWing 3208. Z字形扫描

【思路】
模拟
z形矩阵分两部分:前半部分和后半部分
先确定每个部分的起始位置 然后根据每条对角线x、y之和是定值。x走动带动y
在这里插入图片描述

import java.util.Scanner;
public class Main{
    static int N = 510;
    static int a[][] = new int[N][N];
    public static void main(String args[]){
        Scanner reader = new Scanner(System.in);
        int n = reader.nextInt();
        for(int i = 0; i < n; i ++)
            for(int j = 0; j < n; j ++)
                a[i][j] = reader.nextInt();
        int step = 0;

        int x = 0, y = step -x;
        while( step <= n - 1){//前半部分
            if(step % 2 == 1) //从右上到左下
                for(x = 0, y = step -x; x <= step; x++, y = step -x)
                    System.out.print(a[x][y]+" ");
            else //从左下到右上
                for(x = step, y = step -x; x >=0 ; x --, y = step -x)
                    System.out.print(a[x][y]+" ");
            step ++; 
        }
        int k = 1;
        while( step < 2 * n - 1){//后半部分
            if(step % 2 == 0 ){//从左下到右上
                for(x = n - 1, y = step - x; x >= k; x --, y = step - x)
                    System.out.print(a[x][y]+" ");
            }
            else //从右上到左下
                for(y = n - 1, x = step - y; x < n; x ++ , y = step - x)
                    System.out.print(a[x][y]+" ");
            k ++;
            step ++;
        }
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值