HDU-1176 做个骑士,以梦为马

来源:互联网 发布:看足球比赛的软件 编辑:程序博客网 时间:2024/05/11 03:11
/****************************************************************************************************************HDU:1176      类似数塔,递推方向从最后一层 到第一层   f[i][j]:第j秒在i位置获得的最大馅饼数                  f[0][j] += max { f[0][j+1] , f[1][j+1] }   i=0;                  f[10][j] += max { f[10][j+1] , f[9][j+1] }  i=10                  f[i][j] += max { f[i+1][j+1] , f[i-1][j+1] , f[i][j+1] }    0<i<10*****************************************************************************************************************/#include <iostream>#include <string.h>#include <algorithm> //max函数用,HDU不支持直接使用using namespace std;int f[11][100001]; //为什么定义在 main 之前就没有越界int main(){    int n,x,T;    while(cin>>n,n!=0)    {        int maxtime=0;        memset(f,0,sizeof(f));//f=0;        for(int i=0;i<n;i++)        {            cin>>x>>T;            f[x][T]++;            if(T>maxtime)                maxtime=T;        }        //cout<<maxtime<<endl;        for(int j=maxtime-1;j>=0;j--)        {            f[0][j] += max(f[0][j+1],f[1][j+1]);            f[10][j] += max(f[10][j+1],f[9][j+1]);            for(int i=1;i<10;i++)                f[i][j] += max(max(f[i][j+1],f[i+1][j+1]),f[i-1][j+1]);        }        cout<<f[5][0]<<endl;    }    return 0;}

0 0