题目描述:
给定一个地图map,1代表不能通行(有阻碍物),0代表可以通行。
给定初始点位置start[m,n];
给定目的地位置dest[x,y];
求start->dest的最短路径。
输入示例:
5 5 //map的大小
0 0 1 0 0
0 0 0 0 0
0 0 0 1 0
1 1 0 1 1
0 0 0 0 0
2 //start的尺寸
0 4 //m,n
2 //start的尺寸
4 4 //x,y
输出 8
解题思路:
1)初始化一个dp矩阵。所有值设为+∞
2)每一个点都做这样一件事情:根据给定的值去设置当前点的值;并判断周围的点是否需要更新(大于当前值,则从当前点走会更近);需要则更新;
3)更新起始点位置为0;
4)返回目标点位置的值;
代码实现:
static int ShortestDistance(int[][] map, int[] start, int[] dest) {
int[][] dp = new int[map.length][map[0].length];
for (int i = 0; i < dp.length; i++) {
for (int j = 0; j < dp[i].length; j++)
dp[i][j] = Integer.MAX_VALUE;
}
solve(map,dp,start[0],start[1],0);
// for (int i &