BOJ 백준 5561 : 과자의 분할
Updated:
시작하면서
이번 문제는 다이나믹 프로그래밍(Dynamic Programming) 문제이다.
문제 이해
이 문제는 추후에 다시 푼다… 어렵다
해결
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N, input;
vector<int> dp[2];
cin >> N;
dp[0].resize(N);
dp[1].resize(N);
for (int i = 1; i < N; i++)
{
cin >> input;
for (int j = i; j > 1; j--)
{
dp[1][j] = min(dp[0][j - 1], dp[0][i + 1 - j] + input);
}
dp[1][1] = input;
copy(dp[1].begin(), dp[1].begin() + 1 + i, dp[0].begin());
}
cout << dp[0][N * 0.5];
return 0;
}
Leave a comment