//https://www.acmicpc.net/problem/11722 #include <iostream> |
using namespace std; |
int main() |
{ |
int A[1001]; |
int dp[1001]; |
int N,x,max; |
cin >> N; |
for(int i=1; i<=N; i++) cin >> A[i]; |
dp[1]=1; |
for(int i=2; i<=N; i++) |
{ |
max=0; |
for(int j=i-1; j>0; j--) |
{ |
x=1; //자기 자신의 길이가 최초인 경우 항상 1 |
if(A[i]<A[j]) x=dp[j]+1; |
if(max<x) max=x; |
} |
dp[i]=max; |
} |
max=0; |
for(int i=1; i<=N; i++) |
if(max<dp[i]) max=dp[i]; |
cout << max; |
} |
상자 넣기랑 또 같은 문제
중간에 if(A[i]<A[j]) 이 조건으로만 바꿔주면 됨
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
171210_11054_가장 긴 바이토닉 부분 수열 (0) | 2017.12.10 |
---|---|
171210_11053_가장 긴 증가하는 부분 수열 (0) | 2017.12.10 |
171209_11055_가장 큰 증가 부분 수열 (0) | 2017.12.09 |
171208_1965_상자넣기 (0) | 2017.12.08 |
171208_11060_점프 점프 (0) | 2017.12.08 |