第22635题 单选
补全计算网格最小时间消耗动态规划程序的缺失代码

下面的程序中,二维数组 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]

程序使用动态规划计算从左下角到右上角的最小时间消耗,则横线处应该填写下列哪个选项的代码?程序代码如下:

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];
}
A

dis[i][j] = min(dis[i - 1][j] + v[i - 1][j], dis[i][j - 1] + h[i][j - 1]);

B

dis[i][j] = min(dis[i - 1][j] + h[i - 1][j], dis[i][j - 1] + v[i][j - 1]);

C

dis[i + 1][j + 1] = min(dis[i][j + 1] + v[i][j + 1], dis[i + 1][j] + h[i + 1][j]);

D

dis[i + 1][j + 1] = min(dis[i][j + 1] + h[i][j + 1], dis[i + 1][j] + v[i + 1][j]);

提交0次 正确率0.00%
答案解析