publicclassMain{ publicstaticvoidmain(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); if (n <= 3 || n >= 200) { return; }
int[][] matrix = newint[n][n];
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { matrix[i][j] = 7; } }
for (int i = 0; i < n / 2; i++) { for (int j = i; j < n / 2; j++) { matrix[i][j] = 2; } }
for (int i = 0; i < n / 2; i++) { for (int j = n / 2; j < n - i; j++) { matrix[i][j] = 1; } }
for (int i = 0; i < n / 2; i++) { for (int j = 0; j < i; j++) { matrix[i][j] = 3; } }
for (int i = 0; i < n / 2; i++) { for (int j = n - 1; j > n - i - 1; j--) { matrix[i][j] = 8; } }
for (int i = n / 2; i < n; i++) { for (int j = 0; j < n - i; j++) { matrix[i][j] = 4; } }
for (int i = n / 2; i < n; i++) { for (int j = n / 2; j > n - i - 1 && j >= 0; j--) { matrix[i][j] = 5; } }
for (int i = n / 2; i < n; i++) { for (int j = n / 2; j < i; j++) { matrix[i][j] = 6; } }
// 对角线0 for (int i = 0; i < n; i++) { matrix[i][i] = 0; matrix[i][n - i - 1] = 0; }
// 奇数的话还需要横着和竖着 if (n % 2 == 1) { for (int i = 0; i < n; i++) { matrix[i][n / 2] = 0; } for (int j = 0; j < n; j++) { matrix[n / 2][j] = 0; } }
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } }
publicstaticvoidmain(String[] args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); int[][] matrix = newint[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { matrix[i][j] = scanner.nextInt(); } }
System.out.println(helper(matrix)); }
publicstaticinthelper(int[][] matrix){ int max = 0; int row = matrix.length; int col = matrix[0].length; boolean flag = false; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 0) { matrix[i][j] = 1; max = Math.max(max, dfs(i, j, matrix, newboolean[row][col])); if (max == row * col) { return max; } matrix[i][j] = 0; flag = true; } } } if (flag) { return max; } else { return row * col; } }
privatestaticintdfs(int i, int j, int[][] matrix, boolean[][] visited){ if (i < 0 || i >= matrix.length || j < 0 || j >= matrix[0].length || matrix[i][j] == 0 || visited[i][j]) { return0; } visited[i][j] = true;