题意:中文题目不解释。 思路:因为是从中间出发所以思路卡了许久,还在之前做了道HIHO入门的题。能想到的点,从时间思考,然后初始化1s的时候,4,5,6,的数值要特别赋值。之后就是统一的2-maxtime时间内,到当前位置就有能移动的三种情况,左移,右移,停留,比较前一秒情况的最大值+当前位置时间的馅饼值(maps[i][j]),最后求最大馅饼值得时候,要从maxtime来求。
dp[i][j] = max(dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1])+maps[i][j]
(maps[i][j]为当前所在位置所能获得的馅饼值)
/**Sample Input65 14 16 17 27 28 30Sample Output4**/#include#include #include #include using namespace std;const int maxn = 100005;int n;int dp[maxn][15]; //二维注意不要爆内存,列大小填15就可以了int maps[maxn][15];int main(){ while(~scanf("%d",&n)){ memset(dp,0,sizeof(dp)); memset(maps,0,sizeof(maps)); if(!n) break; int time = 0; for(int i=0;i