gpt4 book ai didi

c++ - 如何在 C++ 矩阵 2D 的其他对角线上找到平行对角线反转

转载 作者:行者123 更新时间:2023-11-30 05:19:32 25 4
gpt4 key购买 nike

我在用 C++ 管理二维矩阵 nxn 时遇到了问题。我的问题是创建一个函数来控制主对角线上是否存在任何对角平行线,即与其他对角线相反。我控制了行和列所必需的两个索引,如果它们不同的话,也许我可以帮助我支持数组,它可以反转元素。对于巨大的矩阵(例如 8x8、14 阵列),这可能不是一个好主意,所以,我正在寻求您的帮助。

谢谢

an example with matrix 4x4

这是我的代码:

bool funct(short **M, int rows, int columns){
bool found = false;

for(int i = 0; i < rows; i++){
for(int j = 0; j < colums; j++){

if(i != j){
//control the reverse array
}
}
}
}

ps:我的主要问题是通用算法(nxn)。

最佳答案

在二次矩阵中,每条对角线都有另外一条长度相同的对角线(主对角线除外)。所以你只需要检查这个:

for(int diagonal = 1; diagonal < cols - 1; ++diagonal)
{
//inspect the diagonal that starts at (0, diagonal)
//the other diagonal starts at (diagonal, 0)
int diagonalLength = cols - diagonal;

//Assume that this diagonal has a reverse counterpart
bool diagonalHasReverse = true;

//Now check if it really has
for(int i = 0; i < diagonalLength; ++i)
{
if(M[i][diagonal + i] !=
M[diagonal + diagonalLength - 1 - i][diagonalLength - 1 - i])
{
diagonalHasReverse = false;
break;
}
}
//do whatever you want with diagonalHasReverse
}

外循环不处理最后一个(单元素)对角线。如果要包含它,则必须按如下方式修改循环:

for(int diagonal = 1; diagonal < cols; ++diagonal)

关于c++ - 如何在 C++ 矩阵 2D 的其他对角线上找到平行对角线反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com