java—循环Map路径时认为2矩阵提前结束

kcrjzv8t  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(256)

我想在一个给定的矩阵上创建一条路径,从单元格(n,m)=f(n,m)开始到位置f(1,1),规则是,值最大的单元格在该单元格中得到一个1,我们将指针移动到该单元格,如果出现连接,将0放在未选择的单元格中。重复到单元格(1,1),然后打印所用的路径。我尝试过在while循环中将&&to | |更改为| |,但这只会给我一个错误,并且输出没有任何更改。输出路径为(4,4)(3,4)(3,3)(3,2)(3,1)
输出路径应采取(4,4)(3,4)(3,3)(3,2)(3,1)(2,1)(1,1)有何建议?

public class JavaApplication6 {
    /**
     * @param i
     * @param j
     */
    public static void paste(int i,int j){
    System.out.println("("+i+","+j+")");
}
    public static void main(String[] args) {
        System.out.println("path taken");
        int[][] F = 
{{0,0,50,150},
{100,200,700,900},
{600,1650,1200,1250},
{1100,1200,1200,1250}};
        int rowLen = 4;
        int columnLen = 4;
int i=rowLen-1;
int j=columnLen-1;
paste(i+1,j+1);
 while(i!=0&&j!=0){
    if(F[i-1][j]>F[i][j-1]){
        i=i-1;
        paste(i+1,j+1);
    }
    else if(F[i-1][j]<F[i][j-1]){
        j=j-1;
        paste(i+1,j+1);
    }   
    else if(F[i-1][j]==F[i][j-1]){
        j=j-1;
        paste(i+1,j+1);  
    }    
 }

 }}
q9rjltbz

q9rjltbz1#

修好了!!!
这很管用

public class JavaApplication6 {
    /**
     * @param i
     * @param j
     */
    public static void paste(int i,int j){
    System.out.println("("+i+","+j+")");
}
    public static void main(String[] args) {
        System.out.println("path taken");
        int[][] F = 
{{0,0,50,150},
{100,200,700,900},
{600,1650,1200,1250},
{1100,1200,1200,1250}};
        int rowLen = 4;
        int columnLen = 4;
int i=rowLen-1;
int j=columnLen-1;
paste(i+1,j+1);
 while(i>0||j>0){
    if(j>0&&F[i-1][j]>F[i][j-1]){
        i--;
        paste(i+1,j+1);
    }
    else if(j>0&&F[i-1][j]<F[i][j-1]){
        j--;
        paste(i+1,j+1);
    }   
    else if(j>0&&F[i-1][j]==F[i][j-1]){
        i--;
        paste(i+1,j+1);  
    } 
    /*new code*/
    else if(j==1||F[i-1][j]<F[rowLen - 1][columnLen - 1]-1){    
        i=i-1;
        F[rowLen - 1][columnLen - 1]--;
        paste(i+1,j+1);

    }
    }}}

相关问题