zoukankan      html  css  js  c++  java
  • F

    题目链接:http://acm.hust.edu.cn/vjudge/contest/121396#problem/F

    题意:这个题与那个数组三角形的题差不多,只不过是多了一个倒三角而已;

    分析:需要注意的是定义一个怎样的状态,根据这个状态写出状态转移方程

    状态转移方程: dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j] 上三角

                         dp[i][j]=max(dp[i-1][j],dp[i-1][j+1])+a[i][j] 下三角

    AC代码:

    #include <iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int dp[1050][1050];
    int a[1050][1050];
    int main()
    {
        int t,n,ans;;
        scanf("%d",&t);
        ans=1;
        while(t--)
        {
            scanf("%d",&n);
            memset(dp,0,sizeof(dp));
            memset(a,0,sizeof(a));
            for(int i=1; i<=n; i++)
                for(int j=1; j<=i; j++)
                    scanf("%d",&a[i][j]);
            for(int i=n+1; i<2*n; i++)
                for(int j=1; j<=2*n-i; j++)
                    scanf("%d",&a[i][j]);
            dp[1][1]=a[1][1];
            for(int i=1; i<=n; i++)
                for(int j=i; j>=1; j--)
                    dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j];
            for(int i=n+1; i<2*n; i++)
                for(int j=1; j<=2*n-i; j++)
                    dp[i][j]=max(dp[i-1][j],dp[i-1][j+1])+a[i][j];
    
            printf("Case %d: %d
    ",ans++,dp[2*n-1][1]);
        }
        return 0;
    }
    
    
  • 相关阅读:
    bzoj 3924
    bzoj 1095
    luogu 4886
    bzoj 2152
    CF960G
    bzoj 3561
    bzoj 4176
    bzoj 4407
    bzoj 3309
    luogu 4608
  • 原文地址:https://www.cnblogs.com/lbyj/p/5769127.html
Copyright © 2011-2022 走看看