类似三角型递推
连续数字三角形
整条小路长0-10 每次在不定位置落馅饼 先统计那一时刻落下几块馅饼依次递推即可
代码
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100001][12];
int maxn(int a,int b,int c)
{
int max1;
max1=max(a,b);
max1=max(max1,c);
return max1;
}
int main()
{
int maxx=0;
int x,t;
while(scanf("%d",&n)!=EOF&&n ){
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
{
scanf("%d%d",&x,&t);
a[t][x]++;
if(t>maxx)
{
maxx=t;
}
}
for(int i=maxx-1;i>=0;i--)
{
a[i][0]+=max(a[i+1][0],a[i+1][1]);
for(int j=1;j<10;j++)
{
a[i][j]+=maxn(a[i+1][j-1],a[i+1][j],a[i+1][j+1]);
}
a[i][10]+=max(a[i+1][10],a[i+1][9]);
}
printf("%d\n",a[0][5]);
}
return 0;
}