我想在给定矩阵上创建一个路径,从单元格(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);
}
}
}}
答案 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);
}
}}}