zoukankan      html  css  js  c++  java
  • hdu2084数塔

    经典问题了,题意我就不叙述了(题目是中文的~)

    分析:dp[i][j]表示在第i行第j个位置上能取得的最大和,那么要从最后一行开始算起,到塔顶结束:dp[i][j] = a[i][j]+max(dp[i+1][j], dp[i+1][j+1]), 边界条件是dp[n][j] = a[n][j];

    代码:

    View Code
     1 #include <stdio.h>
     2 #include <iostream>
     3 using namespace std;
     4 #define DEBUG
     5 const int MAXN = 100 + 5;
     6 int a[MAXN][MAXN], dp[MAXN][MAXN];
     7 int max(int a, int b){
     8     return a>b?a:b;
     9 }
    10 int main(){
    11 #ifndef DEBUG
    12     freopen("in.txt", "r", stdin);
    13 #endif
    14     int cas;
    15     scanf("%d", &cas);
    16     while(cas--){
    17         int n;
    18         scanf("%d", &n);
    19         int i, j;
    20         for(i=1; i<=n; i++)
    21             for(j=1; j<=i; j++)
    22                 scanf("%d", &a[i][j]);
    23         for(j=1; j<=n; j++) dp[n][j] = a[n][j];
    24         for(i=n-1; i>=1; i--)
    25             for(j=1; j<=n; j++)
    26                 dp[i][j] = a[i][j] + max(dp[i+1][j], dp[i+1][j+1]);
    27         printf("%d\n", dp[1][1]);
    28     }
    29     return 0;
    30 }
    Greatness is never a given, it must be earned.
  • 相关阅读:
    oracle中的游标
    Oracle中的表空间
    Oracle中建表及表操作
    oracle中的权限管理
    oracle中的数据类型
    Oracle中常用的系统函数
    oracle中的dual表简介
    Oracle中常用的系统表
    Git常用命令总结
    Git配置文件与git config命令
  • 原文地址:https://www.cnblogs.com/zjutzz/p/2910741.html
Copyright © 2011-2022 走看看