POJ2385-Apple Catching

http://poj.org/problem?id=2385

当初也是看了别人的解题报告- -#。。。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[1001][31],num[1001];
int main(void)
{
    int T,W,i,j;
    while(scanf("%d%d",&T,&W)!=EOF)
    {
        for(i=1;i<=T;i++) 
           scanf("%d",&num[i]);
        memset(dp,0,sizeof(dp));
        if(num[1]==1)  
           dp[1][0]=1;
        dp[1][1]=1;
        for(i=2;i<=T;i++)
            for(j=0;j<=W;j++)
            {
                if(j==0) 
                {
                    dp[i][j]=dp[i-1][j]+num[i]%2;
                    continue;
                }
                dp[i][j]=max(dp[i][j],dp[i-1][j]+(j%2+1==num[i]));
                dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
            }
        printf("%d\n",dp[T][W]);
    }
    return 0;
}
posted @ 2012-08-29 12:18  Yogurt Shen  阅读(182)  评论(0编辑  收藏  举报