Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
103594 | 汤奕硕 | 方阵填数 | C++ | Wrong Answer | 1 MS | 276 KB | 1378 | 2024-12-29 14:07:03 |
#include <iostream> #include <vector> using namespace std; // 方阵的行数和列数 int n; // 打印方阵的函数 void printMatrix(vector<vector<int>>& matrix) { for (auto& row : matrix) { for (auto& num : row) { cout.width(2); // 设置输出宽度为2,保证数字对齐 cout << num; } cout << endl; } } // 主函数 int main() { cin >> n; // 输入N vector<vector<int>> matrix(n, vector<int>(n)); // 创建N*N的方阵 int num = 1; // 初始化数字为1 int i = 0, j = n - 1; // 初始化起始位置 // 填充方阵 while (num <= n * n) { for (int k = j; k >= 0; k--) { // 从右向左填充 matrix[i][k] = num++; } for (int k = i + 1; k < n; k++) { // 从上向下填充 matrix[k][j] = num++; } if (i > 0 && j < n - 1) { // 如果不是在第一行或最后一列 for (int k = j - 1; k >= 0; k--) { // 从左向右填充 matrix[n - 1 - k][j] = num++; } for (int k = n - 2 - i; k >= 0; k--) { // 从下向上填充 matrix[i][k] = num++; } } i++; // 移动到下一行 j--; // 移动到上一行 } // 打印方阵 printMatrix(matrix); 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-----
10 9 8 7 6 5 4 3 2 1 52515049484746452011 81807978777675533712 10610510410310210182683813 0 0 0 0 0 095693914 0 0 0 0 0 096704015 0 0 0 0 0 097714116 0 0 0 0 0 098724217 0 0 0 0 0 099734318 0 0 0 0 0 0100744419