找出二维数组中某元素的所有对角元素

时间:2022-12-17 06:10:36

-----------------------------------------------------------------------------------------------------------

写这篇文章的目的,是为了很好的理解八皇后问题,网上一大堆八皇后

问题的解决方法的代码,看后真是失望之极,因为他们没有说出最关键的问题,

就是我们如何判断皇后是否在同一对角线上?这是很多初学者最困惑的地方,

网上的例子丝毫没有提到这个问题,真是失望之极。

-----------------------------------------------------------------------------------------------------------

现在让我们判断两个元素是否在同一对角线上。

数据元素一  arr1【a】【b】

数据元素二 arr2【m】【n】

//当两个数组元素的行坐标和列坐标,各自进行相减或相加所得的结果一样时,则它们在同一对角线上面

//这个你可以自己画图来验证,当初我也是这样推敲出来的

if(a-b==m-n || a+b=m+n)

     cout<<"arr1和arr2在同一对角线上";

------------------------------------------------------------------------------------------------------------------

程序验证:

#include <iostream>
#include <Windows.h>
using namespace std;

/*

函数:Catercorner
函数作用:输出二维数组中某一个元素的所有对角线元素
参数:
arrRow为数组的行数
arrCol为数组的列数
m为元素的行坐标,n为元素的列坐标

*/

void Catercorner(int arrRow,int arrCol,int m,int n)
{
if (m>=arrRow||m<0)
{
cout<<"元素横坐标超界";
return;
}
if (n>=arrCol||n<0)
{
cout<<"元素列坐标超界";
return;
}

for(int i=0;i<arrCol;i++)
cout<<" "<<i<<"";
cout<<endl;
for(int i=0;i<arrRow;i++)
{
cout<<i<<" ";
for(int j=0;j<arrCol;j++)
{
if(m-n==i-j||m+n==i+j)//是对角线元素时,输出实心方框
cout<<"■ ";
else
cout<<"□ ";//非对角线元素时,输出空心方框
}
cout<<"\n";
}
}


void main(void)
{
//设置控制台输出行数和列数
system("mode con:cols=100 lines=1000");

for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
{
printf("数组元素Array[%d][%d]的所有对角元素\n",i,j);
Catercorner(8,8,i,j);
cout<<endl;
}
cin.get();
}


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

//效果截图

找出二维数组中某元素的所有对角元素找出二维数组中某元素的所有对角元素

找出二维数组中某元素的所有对角元素找出二维数组中某元素的所有对角元素

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

找出二维数组中某元素的所有对角元素