1. 程式人生 > 其它 >8 、Acwing 2021/1/20 756.蛇形矩陣

8 、Acwing 2021/1/20 756.蛇形矩陣

技術標籤:2021寒假藍橋杯備

8 、Acwing 2021/1/20 756.蛇形矩陣

  1. 蛇形矩陣

輸入兩個整數n和m,輸出一個n行m列的矩陣,將數字 1 到 n*m 按照回字蛇形填充至矩陣中。

具體矩陣形式可參考樣例。

輸入格式

輸入共一行,包含兩個整數n和m。

輸出格式

輸出滿足要求的矩陣。

矩陣佔n行,每行包含m個空格隔開的整數。

資料範圍

1≤n,m≤1001≤n,m≤100

輸入樣例:

3 3

輸出樣例:

1 2 3
8 9 4
7 6 5
import java.util.*;
public class Main{
    public static void main(String[
] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int[][] q = new int[n][m]; //因為最大的資料是100,多加10防止溢位 //四個方向,上下左右 int[] dx = {-1 , 0 , 1 , 0}; int[] dy = {0 , 1 , 0 , -1}; int x = 0 , y = 0; int
d = 1; //用於改變方向 for(int i = 1 ; i <= n * m ; i ++){ q[x][y] = i ; //填入數 //方向 int a = x + dx[d]; int b = y + dy[d]; //判斷邊界 if(a < 0 || a >= n || b < 0 || b >= m || q[a][b] != 0){ d =
(d + 1) % 4; //技巧,當d等於4時又變為 0 //更新 a = x + dx[d]; b = y + dy[d]; } x = a; y = b; } for(int i = 0 ; i < n ; i ++){ for(int j = 0 ; j < m ; j++){ System.out.print(q[i][j]+" "); } System.out.println(); } } }