형님들 진짜 한번만 도와 주십시오 진짜 도저히 진짜 모르겠어서 질문드립니다 코드 돌리면 list iterator not incrementable 오류 뜨는데
진짜 도저히 모르겠습니다 정말 외판원 문제 3-opt 사용해서 푸는건데 진짜 제발 이코드 뭐가 문제인지 한번만 도와주세요 제발 ㅜㅠㅠㅠ
#include<iostream>
#include<list>
#include<vector>
#include<iterator>
using namespace std;
int main() {
vector<vector<int>> v = { {-1,27,42,16,30,26,3,93,13,33,9}, {7,-1,16,1,30,30,4,77,42,21,16},{20,13,-1,25,5,0,45,17,36,16,28}, {21,16,25,-1,18,18,39,90,80,56,7},
{12,46,27,48,-1,5,28,46,88,33,25}, {23,5,5,9,5,-1,3,88,18,46,92}, {10,15,20,15,35,8,-1,10,15,20,30}, {18,25,11,15,31,17,21,-1,40,45,35},
{13,18,50,17,25,16,26,40,-1,31,35}, {21,16,30,51,45,30,35,20,25,-1,30}, {10,20,15,25,30,35,21,19,15,25,-1}};
list<int> origin = { 1,2,3,4,5,6,7,8,9,10,0,1};
list<int>::iterator i, j, k, i_end, j_end, k_end;
list<int>::iterator ii, jj, kk;
k_end = origin.end();
advance(k_end, -1);
j_end = origin.end();
advance(j_end, -2);
i_end = origin.end();
advance(i_end, -3);
A:for (i=origin.begin(); i != i_end; i++) {
ii = i;
ii++;
for (j = ii; j != j_end; j++) {
jj = j;
jj++;
for (k = jj; k != k_end; k++) {
kk = k;
kk++;
int old_cost = 0;
int new_cost = 0;
old_cost = v[*i][*ii] + v[*j][*jj] + v[*k][*kk];
new_cost = v[*i][*jj] + v[*j][*kk] + v[*k][*ii];
if (new_cost < old_cost) {
origin.splice(kk, origin, ii, jj);
goto A;
}
}
}
}
}
가독성좀;
for (i=origin.begin(); i != i_end; i++) 이부분에서 i 증감연산 빼보셈
i++을 빼라는 말씀이신가요? 그렇게해도 포문이도나요?ㅜㅠ