您的位置:首页 > 其它

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

2016-02-27 13:45 337 查看
/****************************************************************************************************************
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动态规划