Ich habe versucht, Dynamische Programmierung Lösung für TSP (Travelling Salesperson Problem) in C++ zu implementieren. Mein Code kompiliert, aber wenn ich versuche, die Objektdatei auszuführen, hört das Programm auf zu arbeiten, und ich muss es schließen. HierDynamische Programmierlösung für TSP in C++
ist der Code:
int tsp(std::vector<std::vector<int>> matrix) {
int n = matrix[0].size();
std::vector<std::vector<int>> A; // Vertex, Set-Size
std::set<int> S;
for(int i = 0; i < n; ++i) {
S.insert(i);
}
for(int i = 0; i < n; i++) {
if(S.size() == 2) {
A[i][2] = matrix[1][i];
}
else if(S.size() > 2) {
std::set<int>::iterator it;
for(it = S.begin(); it != S.end(); ++it) {
int s = S.size();
S.erase(i);
int sd = S.size();
int k = *it;
if((k != i) && (k != 1) && (A[i][s] > (matrix[k][i] + A[k][sd]))) {
A[i][s] = matrix[k][i] + A[k][sd];
}
}
}
}
return A[1][n];
}
Kann jemand bitte darauf hinweisen, was Fehler, den ich mache.
'A' ist * leer *, jede Indizierung wird * außerhalb der Grenzen * sein. –
Was haben Sie gelernt, wenn Sie den Code unter dem Debugger durchlaufen haben? – paulsm4
Danke für das Aufzeigen. Aber es gibt denselben Fehler, selbst wenn ich Elemente von A auf beliebig große Werte initialisiere. –