2156번 - 포도주 시식
#include
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
int n;
int dp[10001] = { 0 };
cin >> n;
int* num = new int[n];
for (int i = 0; i < n; i++) {
cin >> num[i];
}
dp[0] = num[0];
dp[1] = num[0] + num[1];
for (int i = 2; i <n; i++) {
dp[i] = max(dp[i - 3] + num[i-1], dp[i - 2]) + num[i];
dp[i] = max(dp[i - 1], dp[i]);
cout << dp[n-1];
위에 이 코드는 시작이 0부터이고 아래 코드는 시작이 1부터인것 뿐인데 왜 아래코드만 정답인가요
위에 코드는 초기식이 잘못된것 같네요
dp[2]=max(num[1]+num[2],num[0]+num[2]);
dp[2]=max(num[0]+num[1],dp[2]);
이걸 추가했어야 됐네 ㅋㅋ 시간 엄청 날렸다ㅜ
댓글을 작성하려면 로그인해야 합니다.
moderatowi 3년 전
#include
#include
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
int n;
int dp[10001] = { 0 };
cin >> n;
int* num = new int[n];
for (int i = 0; i < n; i++) {
cin >> num[i];
}
dp[0] = num[0];
dp[1] = num[0] + num[1];
for (int i = 2; i <n; i++) {
dp[i] = max(dp[i - 3] + num[i-1], dp[i - 2]) + num[i];
dp[i] = max(dp[i - 1], dp[i]);
}
cout << dp[n-1];
}
위에 이 코드는 시작이 0부터이고 아래 코드는 시작이 1부터인것 뿐인데 왜 아래코드만 정답인가요