
6 5 1 4 1 6 1 7 2 7 2 8 3 0
4
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[100010][12];
int main()
{
int n,x,i,j,t,m;
while(scanf("%d",&n)&&n)
{
memset(dp,0,sizeof(dp));
m=0;
while(n--)
{
scanf("%d %d",&x,&t);
dp[t][x]++;
if(m<t)
{
m=t; //找出时间最长的时间点
}
}
for(i=m-1; i>=0; i--)
{
dp[i][0] += max(dp[i+1][0],dp[i+1][1]);
for(j=1; j<=10; j++)
{
dp[i][j] += max(max(dp[i+1][j],dp[i+1][j+1]),dp[i+1][j-1]);
}
}
printf("%d\n",dp[0][5]); //0秒时人的初始位置
}
return 0;
}
原文地址:http://blog.csdn.net/holyang_1013197377/article/details/40045559