poj 1887 Testing the CATCHER

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int a[5002];
int d[5002];
int main()
{
    int cases=1;
    while(scanf("%d",&a[0]),a[0]+1)
    {
        int k=1;
        while(scanf("%d",&a[k]),a[k]+1)
        {
            k++;
        }
        //a[0],a[1],,,,a[k-1]
        int i;
        for(i=0;i<k;i++)
        {
            d[i]=1;
        }
        int MAX=d[0];
        int j;
        for(i=1;i<k;i++)
        {
            for(j=0;j<i;j++)
            {
                if(a[i]<a[j]&&d[i]<d[j]+1)
                {
                    d[i]=d[j]+1;
                }
            }
            MAX=MAX>d[i]?MAX:d[i];
        }
        printf("Test #%d:\n  maximum possible interceptions: %d\n\n",cases ++,MAX); 
    }
    return 0;
}

默默地用DP

posted @ 2012-08-07 09:40  willzhang  阅读(148)  评论(0编辑  收藏  举报