【发布时间】:2015-09-19 11:37:17
【问题描述】:
我必须在给定的 2d Array(n,m) 中找到最大和路径,其值从 0 到 99999。0 表示墙。我们没有从数组的左下角开始,必须到达右上单元格(0,m-1)。您可以上/下/右,并且可以访问每个单元格一次。下面是没有任何块的代码。我的问题是我不能从左下角移动到右上角单元格。我还创建了左数组(主数组的最左边),以便我可以从可能的最佳值开始。对不起,我不是好程序员:)。
代码
public static int maxvalue(int [][]field,int[] left)
{
for(int i=field.length-1;i>0 && left[i]!=-1;i--)
{
System.out.println( "Startpos "+i+" 0");
int distance =max(i,0,field,0,field.length-1);
if(distance>maxvalue)
maxvalue=distance;
}
return maxvalue;
}
public static int max(int r, int c,int [][]field ,int destR, int destC)
{
if(r>destR|| c>destC)
return 0;
if(r==0 && c==field[0].length)
return field[r][c];
int sum1=max(r-1,c,field,destR,destC); // up
System.out.println(sum1);
int sum2= max(r+1,c,field,destR,destC); //down
int sum3= max(r,c+1,field,destR,destC); //right
return field[r][c]+Math.max(sum1, Math.max(sum2, sum3));
}
样本
输入
0 1 2 3
2 0 2 4
3 3 0 3
4 2 1 2
输出
25
如何解决这个问题?如果所有路径都被阻塞,则打印 No Solution。
【问题讨论】:
-
您能否分享您的代码,以便我们了解您的尝试以及您遇到的问题?
-
"You can go up/down/top" up 和 top 有什么区别?你能走对吗?你可以向左走吗?
-
我投票决定将此问题作为题外话结束,因为它是一个家庭作业问题,其中不包括迄今为止为解决该问题所做的工作的必要摘要,也不包括对解决时遇到的困难。
-
我想你可能想看看en.wikipedia.org/wiki/A*_search_algorithm