下面的程序中,二维数组 h 和 v 分别代表如下图所示的网格中的水平边的时间消耗和垂直边的时间消耗。程序使用动态规划计算从左下角到右上角的最小时间消耗,则横线处应该填写下列哪个选项的代码?( )。
dis[3][0] -h[3][0]- dis[3][1] -h[3][1]- dis[3][2] -h[3][2]- dis[3][3]
| | | |
v[2][0] v[2][1] v[2][2] v[2][3]
| | | |
dis[2][0] -h[2][0]- dis[2][1] -h[2][1]- dis[2][2] -h[2][2]- dis[2][3]
| | | |
v[1][0] v[1][1] v[1][2] v[1][3]
| | | |
dis[1][0] -h[1][0]- dis[1][1] -h[1][1]- dis[1][2] -h[1][2]- dis[1][3]
| | | |
v[0][0] v[0][1] v[0][2] v[0][3]
| | | |
dis[0][0] -h[0][0]- dis[0][1] -h[0][1]- dis[0][2] -h[0][2]- dis[0][3]
(即水平边 h[i][j] 连接 dis[i][j] 与 dis[i][j + 1],垂直边 v[i][j] 连接 dis[i][j] 与 dis[i + 1][j];左下角为 dis[0][0]。)
int dis[MAXY][MAXX];
int shortest_path(int x, int y) {
dis[0][0] = 0;
for (int i = 0; i < y; i++)
dis[i + 1][0] = dis[i][0] + v[i][0];
for (int j = 0; j < x; j++)
dis[0][j + 1] = dis[0][j] + h[0][j];
for (int i = 0; i < y; i++)
for (int j = 0; j < x; j++)
_____; // 在此处填写代码
return dis[y][x];
}