https://www.acmicpc.net/problem/11053
문제
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.
예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.
입력
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.
둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)
출력
첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdio.h> int arr[1001]; int dp[1001]; int main() { int N,M; int i,j; int min = 0; int max = 0; scanf("%d", &N); for (i = 0; i < N; i++) { dp[i] = 1; min=0; scanf("%d", &arr[i]); for (j = 0; j < i; j++) { if (arr[i] > arr[j] && min < dp[j]) { min = dp[j]; } } dp[i] = min + 1; if (max < dp[i]) max = dp[i]; } printf("%d", max); } | cs |
'백준 알고리즘' 카테고리의 다른 글
[C언어] 백준알고리즘 9372번 상근이의 여행 (0) | 2019.05.19 |
---|---|
[C언어] 백준알고리즘 2631번 줄세우기 문제 (0) | 2019.05.19 |
[C언어] 백준알고리즘 1003번 피보나치 함수 (0) | 2019.05.15 |
[C언어] 백준알고리즘 2579번 계단 오르기 문제 (2) | 2019.05.01 |
[C언어] 백준알고리즘 2718번 미로탐색 문제 (0) | 2019.05.01 |