0
私は、C++でTSP (Travelling Salesperson Problem)の動的プログラミングソリューションを実装しようとしています。私のコードはコンパイルされますが、オブジェクトファイルを実行しようとするとプログラムは機能しなくなり、強制的に閉じます。ここでC++でのTSPの動的プログラミングソリューション
はコードです:
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];
}
誰かが私が作っていますどのような間違いを指摘してくださいすることができます。
'A'があります*空の*、それへのすべてのインデックスは範囲外*です。 –
デバッガの下でコードを踏んで何を学んだのですか? – paulsm4
ありがとうございます。しかし、Aの要素を任意に大きな値に初期化しても同じエラーが発生します。 –