陈老师留的Java课后思考题,感觉挺好玩。
顺便学习一下 STL 的用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| import java.util.HashSet; import java.util.Set;
public class Main { public static void main(String[] args) { int n = (int) (Math.random() * 5) * 2 + 3; System.out.printf("随机一个奇数n = %d\n", n); System.out.println("************************"); int[][] matrix = new int[n][n]; int cnt = 1; int i = 0, j = n / 2; matrix[i][j] = cnt++; while (cnt <= n * n) { i = (i - 1 + n) % n; j = (j + 1) % n; if (matrix[i][j] != 0) { i = (i + 2) % n; j = (j - 1 + n) % n; } matrix[i][j] = cnt++; } for (int ii = 0; ii < n; ii++) { for (int jj = 0; jj < n; jj++) { System.out.printf("%4d", matrix[ii][jj]); } System.out.println(); } System.out.println("************************"); if (check(matrix, n)) { System.out.println("填数正确"); } else { System.out.println("填数错误"); } }
private static boolean check(int matrix[][], int n) { System.out.println("**********check*********"); Set<Integer> set = new HashSet<>(); for (int ii = 0; ii < n; ii++) { int sum = 0; for (int jj = 0; jj < n; jj++) { sum += matrix[ii][jj]; } set.add(sum); System.out.printf("第 %d 行的和为 %d\n", ii + 1, sum); } System.out.println("************************"); for (int jj = 0; jj < n; jj++) { int sum = 0; for (int ii = 0; ii < n; ii++) { sum += matrix[ii][jj]; } set.add(sum); System.out.printf("第 %d 列的和为 %d\n", jj + 1, sum); } System.out.println("************************"); int sum = 0; for (int ii = 0; ii < n; ii++) { sum += matrix[ii][ii]; } set.add(sum); System.out.printf("主对角线的和为 %d\n", sum); System.out.println("************************"); sum = 0; for (int ii = 0; ii < n; ii++) { sum += matrix[ii][n - ii - 1]; } set.add(sum); System.out.printf("副对角线的和为 %d\n", sum); System.out.println("************************"); if (set.size() == 1) { return true; } else { return false; } }
}
|
感谢:https://wenku.baidu.com/view/287eae9b7d1cfad6195f312b3169a4517623e552.html