Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
109193 | 汤奕硕 | 方阵填数 | C++ | Wrong Answer | 1 MS | 272 KB | 2191 | 2025-02-06 11:55:19 |
#include <iostream> #include <vector> using namespace std; int main() { int N; cin >> N; vector<vector<int>> matrix(N, vector<int>(N, 0)); if (N == 0) { return 0; } int count = 0; // 用于记录当前填写的数字 for (int c = 1; c <= (N + 1) / 2; c++) { int row = c - 1; int col = N - c; int num = 0; // 每个圈的起始数字 if (c == 1) { num = N * N; } else { num = (c - 1) * 4 * (N - 2 * (c - 1) + 1) + 1; } // 当前圈的行和列的范围 int min_row = c - 1; int max_row = N - c; int min_col = c - 1; int max_col = N - c; // 填充当前圈 if (c % 2 == 0) { // 偶数层,顺时针填充 // 右 for (int i = min_row; i <= max_row; i++) { matrix[i][col] = num--; } // 下 for (int i = col - 1; i >= min_col; i--) { matrix[max_row][i] = num--; } // 左 for (int i = max_row - 1; i >= min_row; i--) { matrix[i][min_col] = num--; } // 上 for (int i = min_col + 1; i < col; i++) { matrix[min_row][i] = num--; } } else { // 奇数层,逆时针填充 // 左 for (int i = col; i >= min_col; i--) { matrix[row][i] = num--; } // 下 for (int i = row + 1; i <= max_row; i++) { matrix[i][min_col] = num--; } // 右 for (int i = min_col + 1; i <= col; i++) { matrix[max_row][i] = num--; } // 上 for (int i = max_row - 1; i > row; i--) { matrix[i][col] = num--; } } } // 输出结果矩阵 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (j > 0) cout << " "; cout << matrix[i][j]; } cout << endl; } return 0; }
------Input------
10
------Answer-----
28 29 30 31 32 33 34 35 36 1 27 58 59 60 61 62 63 64 37 2 26 57 80 81 82 83 84 65 38 3 25 56 79 94 95 96 85 66 39 4 24 55 78 93 100 97 86 67 40 5 23 54 77 92 99 98 87 68 41 6 22 53 76 91 90 89 88 69 42 7 21 52 75 74 73 72 71 70 43 8 20 51 50 49 48 47 46 45 44 9 19 18 17 16 15 14 13 12 11 10
------Your output-----
91 92 93 94 95 96 97 98 99 100 90 16 15 14 13 12 11 10 37 65 89 17 52 53 54 55 56 57 36 66 88 18 51 52 51 50 61 38 35 67 87 19 50 53 48 49 60 39 34 68 86 20 49 54 47 46 59 40 33 69 85 21 48 55 56 57 58 41 32 70 84 22 47 46 45 44 43 42 31 71 83 23 24 25 26 27 28 29 30 72 82 81 80 79 78 77 76 75 74 73