在java中递归遍历矩阵以找到最佳路径

在java中递归遍历矩阵以找到最佳路径,java,arrays,recursion,matrix,Java,Arrays,Recursion,Matrix,我正在尝试编写一些Java代码,稍后将其转换为MIPS汇编。所以我试着让它尽可能简单。我需要沿对角线向下遍历一个矩阵,对数字进行求和,以找到最高的求和路径。我完全不知道如何编写这个递归方法,任何帮助都将不胜感激 这是我到目前为止编写的代码,首先是主方法,它创建“游戏板”并调用该方法。然后,该方法将给定的单个数组转换为二维数组。采用2d数组并递归地找到最佳路径是我一直坚持的方向 public class intro { public static void main (String[] a

我正在尝试编写一些Java代码,稍后将其转换为MIPS汇编。所以我试着让它尽可能简单。我需要沿对角线向下遍历一个矩阵,对数字进行求和,以找到最高的求和路径。我完全不知道如何编写这个递归方法,任何帮助都将不胜感激

这是我到目前为止编写的代码,首先是主方法,它创建“游戏板”并调用该方法。然后,该方法将给定的单个数组转换为二维数组。采用2d数组并递归地找到最佳路径是我一直坚持的方向

public class intro {
    public static void main (String[] args){
        int[] board = {10, 5, 3, 9, 6, 3, 1, 7, 10, 2, 9, 8, 4, 1, 11, 14, 18, 20, 13, 12};
        int max_rows = 4;
        int max_cols = 5;
        playCheckers newGame = new playCheckers(board, max_rows, max_cols);
        newGame.play();
    }
}
公共类跳棋{
私人董事会;
私有int max_行;
私人int max_cols;
公共跳棋(int[]棋盘,int max_行,int max_列){
this.board=董事会;
this.max\u rows=max\u rows;
this.max\u cols=max\u cols;
}
公共游戏{
int[]总和=新的int[max_cols];
int[][]newArr=新int[max_rows][max_cols];
int结果=0;
int arrCount=0;
///将单个阵列转换为二维阵列///
对于(int i=0;i
当您只对矩阵的对角线求和时,您是如何寻找最大和路径的?如果我理解正确的话,那就只有一条路径,也就是沿着对角线向下。或者,你也在尝试对非主对角线进行求和?因此,从第一行的一个数字开始,你可以按对角线向左或向右向下。你会向左或向右走,这取决于哪个数字更高/最后得到的是最高的总和。然后,您将转到顶行中的另一个数字,并重复该过程。就像在矩阵中“之字形”一样。但是如果我在第一步选择了右边,那么我只能在接下来的所有步骤中选择右边?不,你可以在每一步向下进行左或右诊断。对不起,我应该把它放在主要问题中,我的错。你知道这是一个指数复杂性的问题吗?
public class playCheckers {

    private int[] board;
    private int max_rows;
    private int max_cols;

    public playCheckers(int[] board, int max_rows, int max_cols){
        this.board = board;
        this.max_rows = max_rows;
        this.max_cols = max_cols;
    }

    public void play(){
        int[] sum = new int[max_cols];
        int[][] newArr = new int [max_rows][max_cols];
        int result = 0;
        int arrCount = 0;
        ///Turns single array into 2D array///
        for(int i=0; i < max_rows; i++){
            for(int j=0; j < max_cols; j++){
                newArr[i][j] = board[arrCount];
                arrCount++;
            }
        }

        System.out.println("The max value is " + result + " starting at column " + col);
    }
}