回型方阵2
描述
输入一个正整数 n,输出 n×n 的回型方阵。例如,n=5 时,输出:
3 3 3 3 3
3 2 2 2 3
3 2 1 2 3
3 2 2 2 3
3 3 3 3 3
输入
一行一个正整数 n,2≤n≤9。
输出
共 n 行,每行包含 n 个正整数,之间用一个空格隔开。
输入样例 1
3
输出样例 1
2 2 2 2 1 2 2 2 2
提示
注意:行末没有空格。
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int matrix[9][9]; // 最大为9x9的方阵
// 初始化方阵的每个数字为0
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
matrix[i][j] = 0;
}
}
// 填充方阵每一层
int num = (n + 1) / 2; // 计算最外层的数字
for (int layer = 0; layer < num; ++layer) {
// 填充上边
for (int i = layer; i < n - layer; ++i) {
matrix[layer][i] = num - layer;
}
// 填充右边
for (int i = layer; i < n - layer; ++i) {
matrix[i][n - layer - 1] = num - layer;
}
// 填充下边
for (int i = layer; i < n - layer; ++i) {
matrix[n - layer - 1][i] = num - layer;
}
// 填充左边
for (int i = layer; i < n - layer; ++i) {
matrix[i][layer] = num - layer;
}
}
// 输出方阵
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[i][j];
if (j < n - 1) cout << " "; // 在同一行的数字间加空格
}
cout << endl; // 每行结束后换行
}
return 0;
}