酷代码 AI
菜单
服务商

C++ 实现:不大于 9 的正整数 n 对应的 n×n 蛇形方阵生成

```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)$,主要用于存储矩阵的元素。 ######[AI问答 | 576点数解答 | 2025-11-24 20:35:53]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]