虽然循环映射路径认为2矩阵提前结束

时间:2017-09-04 19:04:24

标签: java loops matrix while-loop

我想在给定矩阵上创建一个路径,从单元格(n,m)= F(n,m)开始到位置F(1,1),条件是具有最高值的单元格得到1放置在那个单元格中,我们移动指向该单元格的指针,如果有一个平局则将0放在未选择的单元格中。重复直到单元格(1,1),然后打印所采用的路径。 我试过更换&&到||在while循环中,但这只是给我一个错误,输出没有变化。输出是  采取的路径     (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);  
    }    
 }

 }}

1 个答案:

答案 0 :(得分:0)

固定它!!!

这是有效的

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);

    }
    }}}