HDU 1176 免费馅饼 简单动态规划

世道很简单的动态规划,但是却错了,让我很无语,改来改去还是不对,第二天有写就对了,之后我就耐着性子慢慢比较之前的错误代码,发现

第一次错:纯粹用了a[i][j]+=max3(a[i+1][j-1], a[i+1][j], a[i+1][j+1]);没有考虑j为0没有a[i+1][j-1]的存在和j为10时没有a[i+1][j+1]的存在

第二次错:我纠正了第一次的错误,把j为0和10单独考虑,这是数塔类型,我是自下向上推得,所以行数应该从最大的时间m=t;m-1开始的,但我写的是m,我感觉应该没有什么问题,但却栽了;

第三次错:心太急了,已经心烦意乱了,我纠正了前两次的错误, 并修改成每次a[t][l+1]++;这样就不用特殊处理了,但是我的j应该是从0-12;但我却j=1; j<11; j++; 应该写成 j=1; j<12; j++;我也真是醉了!还有就是a[t][l++]++;也是错,为什么!看来严谨的精神是很重要的!

这次的经历虽然很浪费时间,但是让我明白了,无论什么时候都要静下心来,不能乱,如果心乱了就静一静,先不要写代码!

#include<stdio.h>
#include<string.h>
#define N 100010
int a[N][12];

int max2(int x, int y)
{
    return x>y?x:y;
}

int max3(int x, int y, int z)
{
    int v=max2(x, y);

    return max2(v, z);
}
int main()
{
    int n, l, t;
    while(scanf("%d", &n), n!=0)
    {
        memset(a, 0, sizeof(a));

        int m=0;
        for(int i=0; i<n; i++)
        {
            scanf("%d%d", &l, &t);
            a[t][l+1]++;

            if(m<t)
                m=t;
        }

        for(int i=m-1; i>=0; i--)
            for(int j=1; j<=11; j++)
            {
                a[i][j]+=max3(a[i+1][j-1], a[i+1][j], a[i+1][j+1]);
            }

        printf("%d\n", a[0][6]);

    }
    return 0;
}

  

时间: 2024-08-07 17:02:34

HDU 1176 免费馅饼 简单动态规划的相关文章

HDU 1176 免费馅饼【动态规划】

解题思路:用a[i][j]表示在第i秒在地点j的掉落馅饼的数量,设整个馅饼掉落的时间持续为timemax,即为矩阵的高度,一共0到10个地点,为矩阵的长度,如图,即可构成数塔,因为考虑到在地点0的时候,j-1为负数,所以将地点均从1开始处理则有a[i-1][j]=max(max(a[i][j],a[i][j-1]),a[i][j+1])+a[i-1][j];分别对应在每一个地点的三个选择,对应于上一秒在原地,原地左边,原地右边, 免费馅饼 Time Limit: 2000/1000 MS (Ja

HDU 1176 免费馅饼 (动态规划、另类数塔)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 76293    Accepted Submission(s): 26722 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1

HDU 1176 免费馅饼(简单DP,数塔变形)

Problem Description: 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接.但由于小径两侧都不能站人,所以他只能在小径上接.由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼.现在给

[2016-03-29][HDU][1176][免费馅饼]

时间:2016-03-29 09:46:34 星期二 题目编号:[2016-03-29][HDU][1176][免费馅饼] #include <algorithm> #include <cstring> #include <cstdio> using namespace std; const int maxt = 100000 + 10; int dp[maxt][11]; int a[maxt][11]; int main(){ int n,x,t,maxT; whi

HDU 1176 免费馅饼 (DP)

题目链接:HDU 1176 免费馅饼 中文题. dp[i][j]表示第i秒在j位置得到最大的馅饼数,右边1步,左边1步,原地不动三个状态转移过来. 状态转移方程:dp[i][j]=max(dp[i+1][j],max(dp[i+1][j+1],dp[i+1][j-1]))+mp[i][j]; AC代码: #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; con

hdu 1176 免费馅饼 (dp 数塔类型)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25712    Accepted Submission(s): 8760 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1

hdu 1176 免费馅饼(数塔类型)

http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 33362    Accepted Submission(s): 11410 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上

HDU 1176免费馅饼 DP数塔问题转化

L - 免费馅饼 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1176 Appoint description:  prayerhgq  (2015-07-28) System Crawler  (2015-11-21) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.

Hdoj 1176 免费馅饼 【动态规划】

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26110    Accepted Submission(s): 8905 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1