题目地址:
https://www.acwing.com/problem/content/755/
输入整数 N N N,输出一个 N N N阶的回字形二维数组。数组的最外层为 1 1 1,次外层为 2 2 2,以此类推。
输入格式:
输入包含多行,每行包含一个整数
N
N
N。当输入行为
N
=
0
N=0
N=0时,表示输入结束,且该行无需作任何处理。
输出格式:
对于每个输入整数
N
N
N,输出一个满足要求的
N
N
N阶二维数组。每个数组占
N
N
N行,每行包含
N
N
N个用空格隔开的整数。每个数组输出完毕后,输出一个空行。
数据范围:
0
≤
N
≤
100
0≤N≤100
0≤N≤100
代码如下:
#include <iostream>
using namespace std;
int a[110][110];
int main() {
int n;
while (cin >> n, n) {
for (int i = 1; i <= (n - 1) / 2 + 1; i++)
for (int j = i; j <= n - i + 1; j++)
for (int k = i; k <= n - i + 1; k++)
a[j][k] = i;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
printf("%d ", a[i][j]);
puts("");
}
puts("");
}
return 0;
}
时空复杂度 O ( N 2 ) O(N^2) O(N2)。