题目描述
···
输入整数N,输出一个N阶的回字形二维数组。
数组的最外层为1,次外层为2,以此类推。
输入格式
输入包含多行,每行包含一个整数N。
当输入行为N=0时,表示输入结束,且该行无需作任何处理。
输出格式
对于每个输入整数N,输出一个满足要求的N阶二维数组。
每个数组占N行,每行包含N个用空格隔开的整数。
每个数组输出完毕后,输出一个空行。
数据范围
0≤N≤100
···
输入样例
···
1
2
3
4
5
0
···
输出样例:
···
1
1 1
1 1
1 1 1
1 2 1
1 1 1
1 1 1 1
1 2 2 1
1 2 2 1
1 1 1 1
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
···
题解
```#include [HTML_REMOVED]
using namespace std;
int main()
{
int N;
while(cin >> N, N)
{ int a [N][N];
for (int m = 0, n = 0; m < (N-1) / 2 + 1; m ++, n ++)
{
for (int i = m; i < N - m; i ++ )
{
for (int j = n; j < N - m; j ++ )
{
a [i][j] = m + 1;
}
}
} //N阶全部为1,N-1阶全部为2,N-2阶全部为3,以此类推
for (int i = 0; i < N; i ++ )
{
for (int j = 0; j < N; j ++ )
cout << a [i][j] << ' ';
cout << endl;
} //输出即可
cout << endl;
}
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
你发错地方了吧