RTE (SIGABRT: program aborted, probably assertion fail) 에러 질문드립니다. juhyun16 안녕하세요. 런타임 에러가 나서 질문드립니다. 동적계획법 packing문제를 풀고 있습니다. 어디가 잘못되어서 RTE가 뜨는지 잘 모르겠습니다. 제 코드 지적해주시면 감사하겠습니다. #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <iostream> #include <string> #include <vector> #include <algorithm> #include <cstring> using namespace std; #define for_item for(int item=1; item<=N; item++) #define for_vol for(int vol=1; vol<=W; vol++) #define pb push_back int numOftest; int main(int argc, char* argv[]) { //freopen("input.txt", "r", stdin); for (scanf("%d", &numOftest); numOftest--; ) { int N=0, W=0; scanf("%d %d", &N, &W); string *items = new string[N+1]; //int *volume = new int[N]; //int *wish = new int[N]; vector<int> volume(N+1); vector<int> wish(N+1); string temp; for (int i = 1; i <= N; i++) { cin >> temp >> volume[i] >> wish[i]; items[i] = temp; } vector<vector<int> > dp(N + 1, vector<int>(W + 1, 0)); string* *selected = new string*[N + 1]; for (int i = 0; i < N + 1; i++) selected[i] = new string[W + 1]; for_item { for_vol { if (volume[item] > vol) { dp[item][vol] = dp[item - 1][vol]; selected[item][vol] = selected[item - 1][vol] + " "; } else { if (dp[item - 1][vol] > dp[item - 1][vol - volume[item]] + wish[item]) { dp[item][vol] = dp[item - 1][vol]; selected[item][vol] = selected[item - 1][vol] + " "; } else { dp[item][vol] = dp[item - 1][vol - volume[item]] + wish[item]; selected[item][vol] = selected[item - 1][vol - volume[item]] + " " + to_string(item) + " "; } } //dp[item][vol] = max(dp[item - 1][vol], dp[item - 1][vol - volume[item]] + wish[item]); } } char item_idx[256]; strcpy(item_idx, selected[N][W].c_str()); char *str = strtok(item_idx, " "); vector<int> item_index; do { item_index.pb(atoi(str)); str = strtok(NULL, " "); } while (str != NULL); printf("%d %d\n", dp[N][W], item_index.size()); for (int i = 0; i < item_index.size(); i++) cout << items[item_index[i]] << '\n'; delete[] items; for(int i=0; i<N+1; i++) delete[] selected[i]; delete[] selected; } return 0; } 8년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
juhyun16
안녕하세요. 런타임 에러가 나서 질문드립니다.
동적계획법 packing문제를 풀고 있습니다. 어디가 잘못되어서 RTE가 뜨는지 잘 모르겠습니다. 제 코드 지적해주시면 감사하겠습니다.
8년 전