배열에 크기값(first)과 count를 각각 입력해 주고
탐색때마다 count 값을 올려가는 식으로 재귀함수가 작동하구요
웬만한 테스트케이스는 다 생각해서 해봤는데..
도저히..... 코드가 어디서 오류를 내는지.. 모르겠습니다..
코드만 올려놓고 질문해서 죄송합니다..ㅠ
#include <iostream>
using namespace std;
struct lis {
int first;
int count;
};
int maxsize=0,n;
struct lis *list;
void LIS(int index,int size)
{
int i;
if(size > maxsize) maxsize = size;
for(i=1;i<=n-index;i++)
{ // index+1 ~ n 까지 모두 check
if(list[index].first < list[index+i].first && list[index+i].count < size+1) {
// index의 first값과 index+i의 first 값을 비교
list[index+i].count = size+1;
LIS(index+i,++size);
size--;
}
}
}
int main()
{
int t;
cin >> t;
while(t-->0)
{
int i;
cin >> n;
list = new struct lis[n+1];
for(i=0;i<n;i++) {
cin >> list[i].first; // fisrt에는 입력된 값
list[i].count = 1;
}
for(i=0;i<n;i++)
if(n-i > maxsize)
LIS(i,1);
cout << maxsize << endl;
maxsize=0;
delete [] list;
}
}
int_solution
배열에 크기값(first)과 count를 각각 입력해 주고
탐색때마다 count 값을 올려가는 식으로 재귀함수가 작동하구요
웬만한 테스트케이스는 다 생각해서 해봤는데..
도저히..... 코드가 어디서 오류를 내는지.. 모르겠습니다..
코드만 올려놓고 질문해서 죄송합니다..ㅠ
11년 전