CCF-Z型掃描Java
阿新 • • 發佈:2018-12-16
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Zscan { static Scanner sc; static int n; // 表示矩陣的行數和列數 static int[][] point; static String direction = "right";// 表示方向 static int row; static int col; static List<Integer> list; static int count; public static void main(String[] args) { sc = new Scanner(System.in); n = sc.nextInt(); point = new int[n][n]; list = new ArrayList<>(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { point[i][j] = sc.nextInt(); } } while (count <= n * n) { count++; if (row <= n - 1 && col <= n - 1) { list.add(point[row][col]); } if (direction.equals("right")) { // 那麼行不變 列加1 col++; if (row == 0 && col < n) { // 表示如果是在第一行 那麼接下來應該是往左下角走 direction = "leftdown"; } else if (row == n - 1 && col < n) { // 如果是在最底下 應該是往右上角走 direction = "rightup"; } } else if (direction.equals("leftdown")) { row++; col--; if (col > 0 && row < n - 1) { // 如果一直在這個範圍之內 那麼就一直往左下角走 direction = "leftdown"; } else if (col == 0 && row < n - 1) { // 如果已經到了最左邊 那麼向下走 direction = "down"; } else if (col >= 0 && row == n - 1) { // 如果到了最下面 那麼向右邊走 direction = "right"; } } else if (direction.equals("down")) { row++; if (col == 0) { // 如果已經是在最左左邊 那麼網右上邊走 direction = "rightup"; } else if (col == n - 1) { // 如果已經是在最右邊 那麼往左下邊走 direction = "leftdown"; } } else if (direction.equals("rightup")) { row--; col++; if (row > 0 && col < n - 1) { // 如果一直是在這個範圍之內 那麼一直往右上角走 direction = "rightup"; } else if (row == 0 && col < n - 1) { // 如果已經到了最上面 那麼就往右邊走 direction = "right"; } else if (row >= 0 && col == n - 1) { // 如果已經到了最右邊 那麼就往下面走 direction = "down"; } } } for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + " "); } } }