zoukankan      html  css  js  c++  java
  • 简单dp——HDU

    题目含义
    看了就能理解,一个人捡馅饼

    题目分析

    这和数塔的题做法一样

    一个时间就是一层塔,11个位置就是一层塔有11个数

    可以从塔底到塔顶dp,dp公式是dp[i][j]+=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1])

    题目代码

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=1e5+7;
    int dp[maxn][11],x,t,n;
    int main(){
        while(scanf("%d",&n)&&n){
            memset(dp,0,sizeof(dp));
            int maxt=0;
            for(int i=0;i<n;i++){
                scanf("%d%d",&x,&t);
                dp[t][x]++;
                if(t>maxt)maxt=t;
            }
            for(int i=maxt-1;i>=0;i--)
            for(int j=0;j<=10;j++){
                if(!j)dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
                else if(j==10)dp[i][j]+=max(dp[i+1][j],dp[i+1][j-1]);
                else dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]));
            }
            printf("%d
    ",dp[0][5]);
        }
        return 0;
    }
  • 相关阅读:
    习题2-7
    习题2-6
    习题2-5
    习题2-4
    习题2-3
    作业二 分支循环结构
    2- 8
    实验三-计算圆柱体积
    实验三-计算n个圆柱体体积
    实验3-计算圆面积
  • 原文地址:https://www.cnblogs.com/helman/p/11227926.html
Copyright © 2011-2022 走看看