У меня возникли проблемы с алгоритмом Беллмана-Форда. Это моя попытка, и я получаю результат «Нет пути», который отличается от ожидаемого: «A E». Может ли кто-нибудь объяснить, что не так с моим кодом, и, возможно, найти решение?
void BF(int G[MAX_NODES][MAX_NODES], int n, int BFValue[], int BFPrev[]) {
for (int i = 0; i < n; ++i) {
BFValue = MAX_VALUE;
BFPrev = -1;
}
int src = 0; // Assuming 'A' is the source
BFValue[src] = 0;
for (int k = 0; k < n - 1; ++k) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (G[j] && BFValue + G[j] < BFValue[j]) {
BFValue[j] = BFValue + G[j];
BFPrev[j] = i;
}
}
}
}
}
string BF_Path(int G[MAX_NODES][MAX_NODES], int n, char srcChar, char destChar) {
int BFValue[MAX_NODES], BFPrev[MAX_NODES];
BF(G, n, BFValue, BFPrev);
int src = srcChar - 'A';
int dest = destChar - 'A';
int path[MAX_NODES], pathLength = 0;
// Reconstruct the path in reverse
for (int at = dest; at != -1; at = BFPrev[at]) {
path[pathLength++] = at;
}
if (pathLength == 1 && src != dest) { // If pathLength is 1, only dest was added and there's no path from src to dest
return "No path";
}
// Construct path string in the correct order
string pathStr = "";
for (int i = pathLength - 1; i >= 0; --i) {
pathStr += (char)('A' + path);
if (i > 0) {
pathStr += " ";
}
}
return pathStr;
}
int main() {
std::ifstream fin;
int G[20][20];
int BFValue[20];
int BFPrev[20];
fin.open("inMat2.txt");
int n = 8;
for (int i = 0; i < n; i++) {
BFValue = -1;
BFPrev = -1;
for (int j = 0; j < n; j++) {
fin >> G[i][j];
}
}
cout
Подробнее здесь: https://stackoverflow.com/questions/785 ... -algorithm
Проблемы, связанные с алгоритмом Беллмана-Форда [закрыто] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как избежать броски httpmessageConversionException, связанные с классами, связанные с весной
Anonymous » » в форуме JAVA - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как избежать броски httpmessageConversionException, связанные с классами, связанные с весной
Anonymous » » в форуме JAVA - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-