• Light OJ 1004


    Sample Input

    2

    4

    7

    6 4

    2 5 10

    9 8 12 2

    2 12 7

    8 2

    10

    2

    1

    2 3

    1

    Sample Output

    Case 1: 63

    Case 2: 5


    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<stack> #include<cmath> using namespace std; #define INF 0x3f3f3f3f #define maxn 210 long long f[maxn]; int dp[maxn][maxn]; int Map[maxn][maxn]; int main() { int t,n; scanf("%d",&t); int k = 1; while(t--) { scanf("%d",&n); memset(dp,0,sizeof(dp)); memset(Map,0,sizeof(Map)); for(int i=1; i<=n; i++) for(int j = 1; j<=i; j++) scanf("%d",&Map[i][j]);//上半部分的输入 for(int i=n+1; i<=2*n-1; i++) for(int j = 1; j<=2*n-i; j++) scanf("%d",&Map[i][j]);//下半部分的输入 dp[1][1] = Map[1][1]; for(int i=1; i<=n; i++) for(int j = 1; j<=i; j++) { dp[i+1][j] = max(dp[i+1][j],dp[i][j]+Map[i+1][j]); dp[i+1][j+1] = max(dp[i+1][j+1],dp[i][j]+Map[i+1][j+1]); }//上半部分向下的时候每一个点都有两种选择。 for(int i=n+1; i<=2*n-1; i++) for(int j = 1; j<=2*n-i; j++) { dp[i][j] = max(dp[i-1][j],dp[i-1][j+1]) + Map[i][j]; }//下半部分向下走的时候每一个点都取决于它上面的两个点。 printf("Case %d: %d ",k++,dp[2*n-1][1]); } return 0; }
  • 相关阅读:
    宏------进阶

    公司用中会用到的iOS开源库和第三方组件(不断更新...)
    iOS 开发者旅途中的指南针
    国际化
    Block
    git简单使用教程
    XCode自带解析SAX解析
    GDataXMLNode解析XML
    Predicate
  • 原文地址:https://www.cnblogs.com/biu-biu-biu-/p/5731462.html
Copyright © 2020-2023  润新知