C++信息学奥赛1120:同行列对角线的格

219 阅读1分钟

image.png 代码题解:难度在于对角线变量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;
}