2017-09-04 17 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); 

    } 
    }}}