poj 2385

Posted 发牌员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj 2385相关的知识,希望对你有一定的参考价值。

第一次完全靠自己写出dp,比较激动,让我安静会,,,虽然比较简单。这个题就是分情况讨论就行,我是先通过来回次数考虑位置,然后考虑是否这个位置有苹果落下

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1000+10;
int a[maxn];
int d[maxn][50];
int n,t;
int main()
{
    while(~scanf("%d%d",&n,&t))
    {
        for(int i=1; i<=n; i++)
            scanf("%d",&a[i]);
        memset(d,0,sizeof(d));
        for(int i=1; i<=n; i++)
        {   int zz=min(i,t);
            for(int j=0; j<=zz; j++)
            {
                if(j%2==0)//现在在第一棵树
                {
                    int m1;
                    if(a[i]==1)//第一棵树落苹果
                        m1=d[i-1][j]+1;//在树下不动
                    else m1=d[i-1][j];
                    int m2;
                    if(j-1>=0)
                    m2=d[i-1][j-1]+1;//从另一棵树跑过来
                    else m2=0;
                    d[i][j]=max(m1,m2);
                }
                else if(j%2==1)//在第二颗树
                {//同上
                    int m1;
                    if(a[i]==2)
                        m1=d[i-1][j]+1;
                    else m1=d[i-1][j];
                    int m2;
                       if(j-1>=0)
                    m2=d[i-1][j-1]+1;
                    else m2=0;
                    d[i][j]=max(m1,m2);
                }
            }
        }
    int mm=0;
    for(int i=0;i<=t;i++)
        mm=max(mm,d[n][i]);
        printf("%d\n",mm);
    }
    return 0;
}

 

以上是关于poj 2385的主要内容,如果未能解决你的问题,请参考以下文章

poj 2385动态规划

Apple Catching(POJ 2385)

poj2385(基础DP)

Apple Catching POJ - 2385

POJ 2385 Apple Catching

poj 2385 Apple Catching