题目描述
754.平方矩阵II
方法1
找规律
观察图形可以发现,每一条自左上角到右下角的斜线,上的点的横纵坐标之差的绝对值相同。
以n=5为例,横纵坐标之差绝对值为
0 1 2 3 4
1 0 1 2 3
2 1 0 1 2
3 2 1 0 1
4 3 2 1 0
而输出的值仅比绝对值大1,+1即可。
C++ 代码
#include<iostream>
#include<cmath>
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<<abs(i-j)+1<<' ';
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
方法2
直接输出
先输出对角线”1”,再分右上、左下两部分输出。
C++ 代码
#include<iostream>
using namespace std;
int q[100][100];
int main(){
int n;
while(cin>>n,n){
for(int i=0;i<n;i++){
q[i][i]=1;//对角线填1
for(int j=i+1,k=2;j<n;j++,k++){
q[i][j]=k;//对角线右上部分
}
for(int j=i+1,k=2;j<n;j++,k++){
q[j][i]=k;//对角线左下部分
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<q[i][j]<<' ';
}
cout<<endl;
}
cout<<endl;
}
return 0;
}