zoukankan      html  css  js  c++  java
  • hdu_4826_Labyrinth_2014百度之星(dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4826

    题意:中文题,不解释

    题解:dp搞,第一列只能从上往下走,所以先算出第一列的dp数组,然后开两个dp数组来算剩下列的从上往下和从下往上dp的值,最后取最大就是走到该单元格的最大值

     1 #include<cstdio>
     2 #define max(a,b) ((a)>(b)?(a):(b))
     3 int a[101][101],dp1[101],dp2[101],t,n,m,ic=1;
     4 int fuck(){
     5     for(int i=2;i<=m;i++)a[i][1]+=a[i-1][1];//第一列的dp数组
     6     for(int i=2;i<=n;i++){//剩下的列
     7         dp1[0]=dp2[0]=dp1[m+1]=dp2[m+1]=-99999999;
     8         //分别从下往上算和从上往下算,然后求最大
     9         for(int j=m;j>=1;j--)
    10             dp1[j]=max(dp1[j+1],a[j][i-1])+a[j][i];
    11         for(int j=1;j<=m;j++)
    12             dp2[j]=max(dp2[j-1],a[j][i-1])+a[j][i];
    13         for(int j=1;j<=m;j++)
    14             a[j][i]=max(dp1[j],dp2[j]);
    15     }
    16     return a[1][n];
    17 }
    18 int main(){
    19     scanf("%d",&t);
    20     while(t--){
    21         scanf("%d%d",&m,&n);
    22         for(int i=1;i<=m;i++)
    23             for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);
    24         printf("Case #%d:
    %d
    ",ic++,fuck());
    25     }
    26 }
    View Code
  • 相关阅读:
    Codeforces Round #573 (Div. 2) C. Tokitsukaze and Discard Items
    Codeforces Round #573 (Div. 2) B
    练习2
    练习1
    上机练习4
    上机练习3
    上机练习1
    JAVA第一次作业
    es document的强制替换、创建、删除
    es 返回定制化的_source数据
  • 原文地址:https://www.cnblogs.com/bin-gege/p/5696172.html
Copyright © 2011-2022 走看看