首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将矩阵int[,]的值从左下角对角线相加到右上角?

如何将矩阵int[,]的值从左下角对角线相加到右上角?
EN

Stack Overflow用户
提问于 2010-03-03 23:06:05
回答 2查看 2K关注 0票数 0

如何将矩阵int的值从左下角对角线添加到右上角?

我试着帮助一个朋友理解这一点,但我真的不明白他们在这里做什么。

下面是我试图向他解释的方法:

代码语言:javascript
运行
复制
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];
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-03 23:11:43

理解这一点的关键是if语句:

代码语言:javascript
运行
复制
if (f == columnas - c - 1)

这两个嵌套循环遍历行(使用f作为索引)和每行、列(使用c作为索引)。

因此,在每次迭代中,测试行数(即f)是否等于反转的列数(即从总列数-columnas中减去c )。测试列号颠倒的原因是因为您希望从左下角添加到右上角,这与从右上角添加到左下角相同。

需要注意的一点是,矩阵对角线只对正方形矩阵有意义,这意味着列数需要与行数相同(在您的算法中,filas应该等于columnas)。

因此,假设有一个5x5矩阵:

第0行(f = 0) -->第4列(c =5-0- 1)

代码语言:javascript
运行
复制
Row 1 (f = 1) --> Column 3 (c = 5 - 1 - 1)
代码语言:javascript
运行
复制
Row 2 (f = 2) --> Column 2 (c = 5 - 2 - 1)
代码语言:javascript
运行
复制
Row 3 (f = 3) --> Column 1 (c = 5 - 3 - 1)
代码语言:javascript
运行
复制
Row 4 (f = 4) --> Column 0 (c = 5 - 4 - 1)
票数 1
EN

Stack Overflow用户

发布于 2010-03-03 23:18:06

没有必要使用双循环。

M x m矩阵:

代码语言:javascript
运行
复制
for(int rowNr = 0; rowNr < m; rowNr++)
{
   int colNr = m - rowNr - 1;
   Addition += matrix[rownr, colnr];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2372321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档