gpt4 book ai didi

c++ - 关于次对角线的转置(翻转)矩阵

转载 作者:行者123 更新时间:2023-11-28 01:41:33 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来转置关于它的次对角线的方阵。我知道如何正常转置它(沿着它的正常对角线),但我无法弄清楚如何围绕次轴进行转置。

循环中有什么问题?我知道我必须运行它直到 'N/2' 并更改 'i' 和 'j' 的初始化,但即使我这样做也不起作用。

void transpose(int a[][N]) // Transposes matrix along the secondary diagonal 
{
for (int i = 0; i < N; i++)
for (int j = 0; j < i; j++)
{
int tmp = a[i][j];
a[i][j] = a[N - 1 - j][N - 1 - i];
a[N - 1 - j][N - 1 - i] = tmp;
}

}

最佳答案

所以,我花了很多时间才弄清楚循环。正确的代码应该访问方阵中的上三角元素,并将它们与下三角矩阵中的相应元素交换。次对角线保持不变。

这是经过测试的有效代码:

void swapEl(int mat[][n])
{
for (int i = 0; i < (n - 1); i++)
for (int j = 0; j < (n - 1) - i; j++)
{
int tmp = mat[i][j];
mat[i][j] = mat[(n - 1) - j][(n - 1) - i];
mat[(n - 1) - j][(n - 1) - i] = tmp;
}
}

关于c++ - 关于次对角线的转置(翻转)矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921144/

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