利用平方矩阵一的思路进行延续,先定义四个方向的距离,再定义新变量sum–距离差的绝对值的和,然后观察得到新规律,输出矩阵上的点,规律为sum=0的时候输出1;sum!=0的时候输出2的点对应sum==2,输出3的点对应sum=4,输出i的点对应(sum+2)/2.
代码如下
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n=0;
while(cin>>n,n)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
int up=i,down=n-i+1,left=j,right=n-j+1;
int sum=abs(right-down)+abs(left-up);
if(sum==0) cout<<1<<" ";
else cout<<(sum+2)/2<<" ";
}
cout<<endl;
}
cout<<endl;
}
}