酷代码 AI
菜单
服务商

题目描述 给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。 从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。 输入格式 输入一个正整数 n,含义如题所述。 输出格式 输出符合题目要求的蛇形矩阵。 输入输出样例 输入 #1复制运行 4 输出 #1复制运行 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 说明/提示 数据保证,1≤n≤9。 用c++

```cpp #include <iostream> #include <iomanip> using namespace std; const int MAXN = 10; int matrix[MAXN][MAXN]; int main() { int n; cin >> n; int num = 1; int top = 0, bottom = n - 1, left = 0, right = n - 1; while (top <= bottom && left <= right) { // 从左到右 for (int i = left; i <= right; i++) { matrix[top][i] = num++; } top++; // 从上到下 for (int i = top; i <= bottom; i++) { matrix[i][right] = num++; } right--; if (top <= bottom) { // 从右到左 for (int i = right; i >= left; i--) { matrix[bottom][i] = num++; } bottom--; } if (left <= right) { // 从下到上 for (int i = bottom; i >= top; i--) { matrix[i][left] = num++; } left++; } } // 输出矩阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << setw(3) << matrix[i][j]; } cout << endl; } return 0; } ``` 代码解释 1. 定义常量和数组:`MAXN` 定义了矩阵的最大大小,`matrix` 数组用于存储蛇形方阵的元素。 2. 输入处理:读取用户输入的正整数 `n`,表示方阵的大小。 3. 填充矩阵:使用四个变量 `top`、`bottom`、`left` 和 `right` 分别表示当前填充区域的上、下、左、右边界。通过循环,按照顺时针方向依次填充矩阵的元素。 4. 输出矩阵:使用 `setw(3)` 控制每个数字占用 3 个字符的宽度,确保输出格式正确。 复杂度分析 - 时间复杂度:$O(n^2)$,因为需要填充 $n \times n$ 个元素。 - 空间复杂度:$O(n^2)$,主要用于存储矩阵的元素。 [2025-11-24 20:35:53 | AI问答 | 576点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多