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