Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
109193 汤奕硕 方阵填数 C++ Wrong Answer 1 MS 272 KB 2191 2025-02-06 11:55:19

Tests(0/3):


Code:

#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; }


Run Info:

------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