20200921--同行列对角线的格(奥赛一本通P89 2 二维数组)

输入三个自然数n,i,j(1<=i<=n,1<=j<=n),输出在一个n*n格的棋盘中(行列均从1开始编号),与格子(i,j)同行,同列,同一对角线的所有格子的位置。

如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:

输入样例:n=4 x=2 y=3

输出样例: 

(2,1)  (2,2)  (2,3)  (2,4)

(1,3)  (2,3)  (3,3)  (4,4)

(4,1)  (2,3)  (3,2)  (1,4)

(1,2)  (2,3)  (3,3)

思路:先输出同行的格式位置,再输出同列格式位置;对角线(右上到左下)的规律是横+竖之和相等,如4+1=2+3=3+2=1+4,左上到右下则是横-竖相等。

#include <bits/stdc++.h>

using namespace std;

int n,x,y;//n 代表棋盘大小,x和y分别代表横向格子位置和竖向格子位置

int main()

{

  cout<<"请输入棋盘的格数n,横竖都为n"<<endl; 

  cin>>n;

  cout<<"请输入初始的x和y值,如(2,3)代表第二行第三列"<<endl; 

  cin>>x>>y;

  for(int i=1;i<=n;i++)

    {
      cout<<"("<<x<<","<<i<<")";

    }

  cout<<endl;

  for(int j=1;j<=n;j++)
    {
      cout<<"("<<j<<","<<y<<")";

    }

  cout<<endl;

   for(int j=1;j<=n;j++)
    { for(int i=1;i<=n;i++)

       {if(i+j==x+y)

         {  cout<<"("<<i<<","<<j<<")"; }

       }

    }

  cout<<endl;

  return 0;

}

原文地址:https://www.cnblogs.com/whcsrj/p/13694652.html