POJ2385--Apple Catching
분석: 상태: dp[i][j]는 i분에 j회 이동한 애플의 수를 나타낸다.
상태 이동 방정식: dp[i][j]=max(dp[i-1][j], dp[i-1][j-1]), 그리고 현재 i분에 사과가 떨어진 나무 밑에 있는지 판단한다. 그렇다면 dp[i][j]++.
상태 이동 방정식에 대한 설명은 다음과 같다. i분에 얻을 수 있는 사과 수량은 i-1분에 나무 1과 나무 2에서 사과의 최대치를 얻는 것과 같다.j가 짝수이면 나무 1 아래, 홀수는 나무 2 아래에 있다.
코드:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1111;
int a[maxn], dp[maxn][40];
int main() {
int t, w;
while(~scanf("%d%d", &t, &w)) {
for(int i = 1; i <= t; i++)
scanf("%d", &a[i]);
if(a[1] == 1) {
dp[1][0] = 1;
dp[1][1] = 0;
}
else {
dp[1][0] = 0;
dp[1][1] = 1;
}
for(int i = 2; i <= t; i++) {
for(int j = 0; j <= w; j++) {
if(j == 0) dp[i][j] = dp[i-1][j] + a[i]%2;
else {
dp[i][j] = max(dp[i-1][j], dp[i-1][j-1]);
if(j%2+1 == a[i]) dp[i][j]++;
}
}
}
int ans = 0;
for(int i = 0; i <= w; i++)
ans = max(ans, dp[t][i]);
printf("%d
", ans);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.