JLIS 관련 질문드립니다. again4you 책에서 쉽다고 한 JLIS 문제를 몇 일간 헤매다가 도움을 구하고 글을 올립니다. 코드를 직접 올리고 조언을 구하는 것이 안된다는 것은 알지만, 문제의 뎃글에 있는 예제와 sample까지 모두 통과했는데도, 검증시 오답이 나오니 원인이 뭔지 찾기가 힘드네요. 그럼 신경써서 글 읽어주셔서 감사합니다. #include <stdio.h> #include <string.h> #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #define NEGINF (-987654321) int len_a, len_b; int a[100], b[100]; int cache[101][101]; int get_max_jlis(int idx_a, int idx_b) { int *pret; long long la, lb, max_value; int next_a, next_b; // cache pret = &cache[idx_a+1][idx_b+1]; if (*pret != -1) return *pret; *pret = 2; la = (idx_a == -1 ? NEGINF : a[idx_a]); lb = (idx_b == -1 ? NEGINF : b[idx_b]); max_value = MAX(la, lb); for (next_a = idx_a + 1; next_a < len_a; ++next_a) if (max_value < a[next_a]) *pret = MAX(*pret, get_max_jlis(next_a, idx_b) + 1); for (next_b = idx_b + 1; next_b < len_b; ++next_b) if (max_value < b[next_b]) *pret = MAX(*pret, get_max_jlis(idx_a, next_b) + 1); return *pret; } int main() { int c, i, j; scanf("%d", &c); while (c--) { scanf("%d %d", &len_a, &len_b); for (i = 0; i < len_a; ++i) scanf("%d", &a[i]); for (i = 0; i < len_b; ++i) scanf("%d", &b[i]); // Init memset(cache, -1, sizeof(cache)); // Get Value printf("%d\n", get_max_jlis(-1, -1)-2); } return 0; } 9년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
again4you
책에서 쉽다고 한 JLIS 문제를 몇 일간 헤매다가 도움을 구하고 글을 올립니다. 코드를 직접 올리고 조언을 구하는 것이 안된다는 것은 알지만, 문제의 뎃글에 있는 예제와 sample까지 모두 통과했는데도, 검증시 오답이 나오니 원인이 뭔지 찾기가 힘드네요.
그럼 신경써서 글 읽어주셔서 감사합니다.
9년 전