修改第二道题的代码,第二道题增加条件A和B之间不能通行,B和F之间不能通行,D和G之间不能通行
时间: 2024-10-19 18:07:34 浏览: 14
为了满足题目中的新条件(A和B之间不能通行,B和F之间不能通行,D和G之间不能通行),我们需要在初始化 `journey` 和 `speed` 数组时进行相应的调整。以下是修改后的代码:
```cpp
#include <iostream>
#include <iomanip>
#include <limits.h>
using namespace std;
int main(int argc, char* argv[]) {
int n = 8;
float journey[8][8] = {INT_MAX};
// 初始化旅程数组
journey[0][1] = 9; // A-B
journey[0][2] = 7; // A-C
journey[0][3] = 9; // A-D
journey[1][2] = 6; // B-C
journey[1][4] = 12; // B-E
journey[1][5] = 12; // B-F
journey[2][3] = 8; // C-D
journey[2][4] = 9; // C-E
journey[3][4] = 10; // D-E
journey[3][6] = 10; // D-G
journey[4][5] = 7; // E-F
journey[4][6] = 8; // E-G
journey[4][7] = 7; // E-H
journey[5][7] = 9; // F-H
journey[6][7] = 11; // G-H
// 设置对称性
for (int i = 0; i < n; i++) {
journey[i][i] = 0;
for (int j = i + 1; j < n; j++) {
if (journey[i][j] < INT_MAX) {
journey[j][i] = journey[i][j];
}
}
}
// 初始化速度数组
float speed[8][8] = {0};
speed[0][1] = 40; // A-B (拥堵)
speed[0][3] = 80; // A-D
speed[1][5] = 40; // B-F (拥堵)
speed[3][6] = 30; // D-G (拥堵)
speed[4][7] = 20; // E-H (拥堵)
speed[0][2] = 50; // A-C
speed[1][2] = 50; // B-C
speed[1][4] = 50; // B-E
speed[2][3] = 50; // C-D
speed[2][4] = 50; // C-E
speed[3][4] = 50; // D-E
speed[4][5] = 50; // E-F
speed[4][6] = 50; // E-G
speed[5][7] = 50; // F-H
speed[6][7] = 50; // G-H
// 设置对称性
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (speed[i][j] > 0) {
speed[j][i] = speed[i][j];
}
}
}
// 处理不可通行的路段
journey[0][1] = INT_MAX; // A-B 不通
journey[1][5] = INT_MAX; // B-F 不通
journey[3][6] = INT_MAX; // D-G 不通
// 补充查找最快路线代码
// ...
// 补充打印路线代码
// ...
getchar();
return 0;
}
```
### 解释
1. **初始化旅程数组**:我们初始化了 `journey` 数组,并设置了各个城市的距离。
2. **设置对称性**:因为距离是双向的,所以我们将 `journey[i][j]` 和 `journey[j][i]` 设为相同的值。
3. **初始化速度数组**:我们初始化了 `speed` 数组,并设置了各个城市的平均速度。
4. **处理不可通行的路段**:将 `journey[0][1]`, `journey[1][5]`, `journey[3][6]` 设为 `INT_MAX`,表示这些路段不通。
接下来,你可以继续补充查找最快路线的代码和打印路线的代码。
阅读全文