[ 백준 14002 - 가장 긴 증가하는 부분 수열4 ]
https://www.acmicpc.net/problem/14002
14002번: 가장 긴 증가하는 부분 수열 4
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
#include <stdio.h>
#include <string.h>
int main()
{
int a[1001]={0,};
int dy[1001]={0,}, path[1001]={0,};
int stack[1010]={0,};
int n, i, j, k=0, l, top=0;
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d", &a[i]);
}
for(i=0;i<n;i++)
{
dy[i]=1;
path[i]=-1;
for(j=0;j<i;j++)
{
if(a[i]>a[j] && dy[j]+1>dy[i])
{
dy[i]=dy[j]+1;
path[i]=j;
}
}
if(k<dy[i])
{
k=dy[i];
l=i;
}
}
do{
stack[top]=a[l];
l=path[l];
top++;
if(l==-1)
{
break;
}
}while(1);
printf("%d\n", k);
do{
top--;
if(top==-1)
{
break;
}
printf("%d ", stack[top]);
}while(1);
return 0;
}
'백준 문제풀이' 카테고리의 다른 글
백준 2448번 - 별찍기11 (0) | 2021.12.01 |
---|---|
백준 2447번 - 별찍기10 (0) | 2021.12.01 |
백준 2605번 줄세우기 (0) | 2021.10.20 |
백준 2655번 - 가장 높은탑 쌓기 (0) | 2021.10.20 |
백준 10989 수 정렬하기3 소스 코드 (0) | 2021.10.08 |