第一次做的时候是这样想的:输出的矩阵是上下左右对称的,只要关注左上角的部分,其规律是a[i][j]=min(i,j)+1
;其他部分用类似坐标变换的方法将下标转换到左上角的情况即可。
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int N;
while(cin >> N && N)
{
int m, n;
for(int i = 0; i < N; i++)
{
if(i > (N - 1) / 2) m = N - 1 - i;
else m = i;
for(int j = 0; j < N; j++)
{
if(j > (N - 1) / 2) n = N - 1 - j;
else n = j;
cout << min(m, n) + 1 << " ";
}
cout << endl;
}
cout << endl;
}
return 0;
}