java - 想要JAVA中mxn矩阵中的所有对角线

标签 java matrix multidimensional-array

我的矩阵是

0  1  2  3  4  
5  6  7  8  9  
10 11 12 12 14  
15 16 17 18 19  

我要打印

4  
3 9  
2 8 14  
1 7 12 19  
0 6 12 18  
5 11 17  
10 16  
15

提前致谢。此代码正在检查其他对角线

当前代码是:

int rows = 5;
        int cols = 8;
        int maxSum = rows + cols - 2;

        for (int sum = 0; sum <= maxSum; sum++) {
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    if (i + j - sum == 0) {
                       // work is done here

                    }
                }
            }

        }

我已经尝试了很多,但其他对角线没有得到检查。

最佳答案

我能想到的一个简单逻辑是使用两种类型的循环。第一个是向后方向,第二个是向前方向。我不太确定这是否适用于所有情况,但您可以遵循这样的操作

public class MatrixDiagonal {

    public static void main(String[] args) {
        int m = 4, n = 5;
        int[][] matrix = {  { 0, 1, 2, 3, 4 }, 
                    { 5, 6, 7, 8, 9 },
                    { 10, 11, 12, 12, 14 }, 
                    { 15, 16, 17, 18, 19 } };
        for(int j=n-1; j>=0; j--){
            for(int k=0; k<m; k++){
                if((j + k) < n){
                    System.out.print(matrix[k][j + k] + " ");
                } else {
                    break;
                }
            }
            System.out.println();
        }
        for(int i=1; i<m; i++){
            for(int j=i, k=0; j<m && k<n; j++, k++){
                System.out.print(matrix[j][k] + " ");
            }
            System.out.println();
        }
    }

}

关于java - 想要JAVA中mxn矩阵中的所有对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951001/

相关文章:

javascript - 从多维数组中提取值

c - 对二维数组进行排序,使最大的元素位于主对角线上

java - 如何使用 Java 创建 JSON 文档?

java - 如何创建具有动态数量变量的java类

java - EMMA 与 Junit,我应该使用检测类还是 java 类进行测试?

c - 二维矩阵中最小的 3 个元素

c - 为什么不增加 z?

c - 在 C 中定义矩阵

arrays - Go 中的多维 slice

java - 从 ServerSOAPFaultException 读取 CXF 异常消息详细信息