有以下几点发现
- 对角线上的点一定是 1
- 每行从 1 向两端依次递增
所以代码如下
#include<iostream>
using namespace std;
int main(){
int n;
bool f = true;
while(cin>>n){
if(f) f=false;
else cout<<endl;
for(int i = 0; i < n ; i++ ){
int k = 0;
for(int j = 0 ; j< n; j++ ){
k++;
if(i==j) cout<<"1";
else if(i>j)cout<<i-j+1;
else cout<<j-i+1;
if(k<=n) cout<<" ";
}
cout<<endl;
}
}
}