2017-09-04 42 views
-2

我想创建一个给定的矩阵从单元格(n,m)= F(n,m)到F(1,1)规则:具有最高值的单元格将该单元格放入1,并且我们将指针移动到该单元格,如果存在一条平铺线,则将0放入未选中的单元格中。重复直到单元格(1,1),然后打印采取的路径。 我试过将& &更改为||在while循环中,但只是给了我一个错误,没有改变输出。输出被取 路径 (4,4) (3,4) (3,3) (3,2) (3,1)虽然循环映射的路径认为2矩阵早期结束

输出应采取 路径 (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); 
    }  
} 

}} 
+0

是:使用的变量名意味着什么。 F是'F'? – GhostCat

+0

寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:如何创建[mcve]。使用“编辑”链接来改善你的*问题* - 不要通过评论添加更多信息。谢谢! – GhostCat

+0

像在:程序应该做什么? – GhostCat

回答

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

    } 
    }}}