代码题解:难度在于对角线变量
i从最后一行开始递减到第一行,变量j从第一列到最后一列依次遍历数组的每个元素。通过判断i + j是否等于数组大小减1,即处于同一对角线上,我们将对应的格子位置输出。
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int d;
int n,m;
cin>>d>>n>>m;
for(int i=0;i<d;i++){
cout<<"("<<n<<","<<i+1<<")"<<" ";
}
cout<<endl;
for(int i=0;i<d;i++){
cout<<"("<<i+1<<","<<m<<")"<<" ";
}
cout<<endl;
for(int i=0;i<d;i++){
for(int j=0;j<d;j++){
if(j-i==m-n)
cout<<"("<<i+1<<","<<j+1<<")"<<" ";
}
}
cout<<endl;
for(int i=d-1;i>=0;i--){
for(int j=0;j<d;j++){
if(j+i+2==m+n)
cout<<"("<<i+1<<","<<j+1<<")"<<" ";
}
}
return 0;
}