<Baekjoon>#11055가장 큰 증가하는 부분 수열 (Bigget increasing subsequence) c++

Google 아니고 Joogle·2021년 10월 10일
0

Baekjoon

목록 보기
12/47
post-thumbnail

먼저 A[i]에 값을 입력 받으면서 B[i]에도 값을 똑같이 넣어준다.
A의 부분수열이 증가수열이면서
현재 비교대상값(B[i]) 보다 이전까지의 합+ 현재값 (B[j]+A[j])이 더 큰 경우 이 값을 현재 비교대상값(B[i])에 넣어준다.

코드 짜면서도 자꾸 헷갈려서 표에 값을 채워가며 생각했다

#include<iostream>
#include<vector>

using namespace std;

const int MAX = 1001;

int bis(int k) {

	int result = 0;
	int B[MAX];
	vector<int>A(k);

	for (int i = 0; i < k; i++) {
		cin >> A[i];
		B[i] = A[i];

		for (int j = 0; j < i; j++) {
			if (A[j] < A[i] && B[i] < B[j] + A[i])
				B[i] = B[j] + A[i];
		}

		result = max(result, B[i]);
	}

	return result;
}

int  main() {
	int k;
	cin >> k;
	cout<<bis(k)<<endl;

	return 0;
}
profile
Backend 개발자 지망생

0개의 댓글