如何将矩阵int的值从左下角对角线添加到右上角?
我试着帮助一个朋友理解这一点,但我真的不明白他们在这里做什么。
下面是我试图向他解释的方法:
public void AddDiagonal()
{
int Addition;
for (int f = 0; f < filas; f++)
{
for (int c = 0; c < columnas; c++)
{
if (f == columnas - c - 1)
{
Addition += matriz[f, c];
}
}
}
}发布于 2010-03-03 23:11:43
理解这一点的关键是if语句:
if (f == columnas - c - 1)这两个嵌套循环遍历行(使用f作为索引)和每行、列(使用c作为索引)。
因此,在每次迭代中,测试行数(即f)是否等于反转的列数(即从总列数-columnas中减去c )。测试列号颠倒的原因是因为您希望从左下角添加到右上角,这与从右上角添加到左下角相同。
需要注意的一点是,矩阵对角线只对正方形矩阵有意义,这意味着列数需要与行数相同(在您的算法中,filas应该等于columnas)。
因此,假设有一个5x5矩阵:
第0行(f = 0) -->第4列(c =5-0- 1)
Row 1 (f = 1) --> Column 3 (c = 5 - 1 - 1)Row 2 (f = 2) --> Column 2 (c = 5 - 2 - 1)Row 3 (f = 3) --> Column 1 (c = 5 - 3 - 1)Row 4 (f = 4) --> Column 0 (c = 5 - 4 - 1)发布于 2010-03-03 23:18:06
没有必要使用双循环。
M x m矩阵:
for(int rowNr = 0; rowNr < m; rowNr++)
{
int colNr = m - rowNr - 1;
Addition += matrix[rownr, colnr];
}https://stackoverflow.com/questions/2372321
复制相似问题