复制Markdown 展开 题目描述 给出一个不大于 9 9 的正整数 � n,输出 � × � n×n 的蛇形方阵。 从左上角填上 1 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 3 个字符,前面使用空格补齐。 输入格式 输入一个正整数 � n,含义如题所述。 输出格式 输出符合题目要求的蛇形矩阵。 输入输出样例 输入 #1复制 4 输出 #1复制 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 说明/提示 数据保证, 1 ≤ � ≤ 9 1≤n≤9。
时间: 2024-04-12 14:31:50 浏览: 157
对于蛇形方阵的生成,可以使用与前面相似的方法,通过循环来填充数字。以下是一个示例代码:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n; // 输入矩阵的大小
int matrix[9][9] = {0}; // 初始化矩阵为全0
int num = 1; // 要填入的数字
int row = 0, col = 0; // 当前位置
int direction = 0; // 方向,0表示向右,1表示向下,2表示向左,3表示向上
while (num <= n * n) {
matrix[row][col] = num;
num++;
switch (direction) {
case 0: // 向右
if (col + 1 < n && matrix[row][col + 1] == 0) {
col++;
} else {
direction = 1; // 改为向下
row++;
}
break;
case 1: // 向下
if (row + 1 < n && matrix[row + 1][col] == 0) {
row++;
} else {
direction = 2; // 改为向左
col--;
}
break;
case 2: // 向左
if (col - 1 >= 0 && matrix[row][col - 1] == 0) {
col--;
} else {
direction = 3; // 改为向上
row--;
}
break;
case 3: // 向上
if (row - 1 >= 0 && matrix[row - 1][col] == 0) {
row--;
} else {
direction = 0; // 改为向右
col++;
}
break;
}
}
// 输出矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(3) << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
你可以根据输入的 `n` 的值来生成不同大小的蛇形矩阵。运行代码并输入 `4` 作为示例输入,得到以下输出:
```
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
```
注意,这里使用了 `setw(3)` 来设置输出宽度为3个字符,以达到每个数字占用3个字符的要求。
阅读全文