• 51Nod 1002 数塔取数问题


     1 #include <cstdio>
     2 #include <algorithm>
     3 #define MAXN  510
     4 using namespace std;
     5 int f[MAXN][MAXN], dp[MAXN][MAXN];// 数字塔数组和dp数组 
     6 int main() {
     7     int n;
     8     scanf("%d", &n);
     9     for (int i = 1; i <= n; i++) {// 循环输入数字塔 
    10         for (int j = 1; j <= i; j++) {
    11             scanf("%d", &f[i][j]);
    12         }
    13     }
    14     for (int j = 1; j <=n; j++) {
    15         dp[n][j] = f[n][j]; // dp数组最底层的元素和数组塔最底层的元素相同,自己到自己的数字之和当然是本身咯 
    16     }
    17     for (int i = n - 1; i >= 1; i--) {
    18         for (int j = 1; j <= i; j++) {
    19             dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + f[i][j]; //状态转移方程 
    20         }
    21     }
    22     
    23     printf("%d
    ", dp[1][1]); //dp[1][1]就是从顶层到底层的最大距离,即为所求 
    24     return 0;
    25 }
  • 相关阅读:
    NSAttributedString用法
    xib Nib IB 可视化编程详解
    对虚函数的理解
    QSS的关键词
    Qt发布问题
    Qt使用与问题处理
    Qt术语
    Qt国际化——使用自带翻译包
    Qt 小记
    查看端口及使用进行
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/7931743.html
Copyright © 2020-2023  润新知