LIS 문제 도움 부탁드립니다. yujin.lee LIS 문제 푸는 중에 오답이 계속 발생하는데 좀 처럼 오답이 발생하는 입력 값을 찾을 수가 없어서 도움 부탁드립니다.ㅠ 코드는 아래와 같습니다. 아래 알고리즘은 geeksforgeeks 사이트에서 참고했구요~. #include <stdio.h> int get_idx(int arr[], int value, int left, int right) { while (left <= right) { int center = left + (right-left)/2; if (arr[center] == value) return center; else if (arr[center] > value) right = center - 1; else left = center + 1; } } int get_lis(int arr[], int length) { int idx_buf[1000] = {0, }; int i, last_pos; idx_buf[0] = arr[0]; last_pos = 0; for (i=1;i<length;i++) { if (arr[i] < idx_buf[0]) { idx_buf[0] = arr[i]; } else if (arr[i] > idx_buf[last_pos]) { last_pos++; idx_buf[last_pos] = arr[i]; } else { int idx = get_idx(idx_buf, arr[i], 0, last_pos); idx_buf[idx] = arr[i]; } } return last_pos + 1; } int main() { int sequence[1000] = {0, }; int i, j; int num1, num2; scanf("%d", &num1); for (i=0;i<num1;i++) { scanf("%d", &num2); for (j=0;j<num2;j++) { scanf("%d", &(sequence[j])); } printf("%d\n", get_lis(sequence, num2)); } return 0; }} 9년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
yujin.lee
LIS 문제 푸는 중에 오답이 계속 발생하는데 좀 처럼 오답이 발생하는 입력 값을 찾을 수가 없어서 도움 부탁드립니다.ㅠ
코드는 아래와 같습니다. 아래 알고리즘은 geeksforgeeks 사이트에서 참고했구요~.
9년 전