题目描述
输入整数 N,输出一个 N 阶的回字形二维数组。
数组的最外层为 1,次外层为 2,以此类推。
参考题解
利用二维行列循环, 获取行列+1的最小值(即min(i + 1, j + 1))
1 1 1 1
1 2 2 2
1 2 3 3
1 2 3 4
可以看出未划横线部分(左上部分)满足,此时如果使图像沿着对角线翻转,再重合
翻转图像,采用min(n - i, n - j)
4 3 2 1
3 3 2 1
2 2 2 1
1 1 1 1
进行图像的重合
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n,n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<min(min(i+1,j+1),min(n-i,n-j))<<" ";
}
cout<<endl;
}
cout<<endl;
}
}