Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
108960 | 彭士宝 | 蛇形矩阵 | C++ | Wrong Answer | 0 MS | 272 KB | 1482 | 2025-01-23 17:28:52 |
#include <iostream> #include <vector> using namespace std; void printSnakeMatrix(int n) { vector<vector<int>> matrix(n, vector<int>(n, 0)); // 创建一个n×n的矩阵,初始化为0 int num = 1; // 从1开始填充数字 int top = 0, bottom = n - 1, left = 0, right = n - 1; // 定义矩阵的边界 while (num <= n * n) { // 从左到右填充顶部行 for (int i = left; i <= right && num <= n * n; ++i) { matrix[top][i] = num++; } top++; // 缩小顶部边界 // 从上到下填充右侧列 for (int i = top; i <= bottom && num <= n * n; ++i) { matrix[i][right] = num++; } right--; // 缩小右侧边界 // 从右到左填充底部行 for (int i = right; i >= left && num <= n * n; --i) { matrix[bottom][i] = num++; } bottom--; // 缩小底部边界 // 从下到上填充左侧列 for (int i = bottom; i >= top && num <= n * n; --i) { matrix[i][left] = num++; } left++; // 缩小左侧边界 } // 输出矩阵 for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { printf("%3d", matrix[i][j]); // 每个数字占3个字符宽度 } printf("\n"); } } int main() { int n; cin >> n; // 输入矩阵大小 printSnakeMatrix(n); // 输出蛇形矩阵 return 0; }
------Input------
4
------Answer-----
1 8 9 16 2 7 10 15 3 6 11 14 4 5 12 13
------Your output-----
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7