ACM PKU Testing the CATCHER http://acm.pku.edu.cn/JudgeOnline/problem?id=1887

这个是最令我无奈的DP了,算法什么难度都没有,关键是初始化和数组下标问题,下面代码中我标记一下,希望大家能够引起注意:

#include <iostream>
using namespace std;

static int flag = 1;

int num[32768];
int longer[32768];

int init(int n)
{
int i , longest = 1;
for (i = 0 ; i <=32767 ; i++)
   longer[i] = 1;
for (i = 2;i <= n; i++)
   for (int j = 1; j < i; j++)
   {
    if (num[i] <= num[j] && longer[i] < longer[j]+1)
    {
     longer[i] = longer[j]+1;   
    } 
    if (longer[i] > longest) 
     longest = longer[i];
   }
  
   return longest;
}

int main ()
{
int a, i;
while (cin >> a && a!=-1)
{
   memset(num,0,sizeof(num));
   i = 2;
   num[1] = a;
   while (scanf("%d",&num[i]) && num[i] != -1) i++;
  
   cout<<"Test #"<<flag<<':'<<endl;
   cout<<" maximum possible interceptions: "<<init(i-1)<<endl<<endl;   //前导空格有两个,最好直接粘贴过来;
   flag++; 
}

return 0;
}

posted on 2011-05-06 19:01  _Clarence  阅读(146)  评论(0编辑  收藏  举报

导航