zoukankan      html  css  js  c++  java
  • 6.数字三角形

    先来解释一下什么是线性dp

    在求状态转移方程时,有明显的线性求取顺序

    比如背包问题

     这道题目我们先给数字编号

     分析

     dp问题的时间复杂度如何分析

    一般是状态数量乘以转移的计算量(就是算每个状态需要的计算量)

    本题大致就是500 * 500

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 510, INF = 1e9;
     4 int a[N][N]; //存储三角形中的每一个点 
     5 int dp[N][N];
     6 int main() {
     7     int n;
     8     cin >> n;
     9     for (int i = 1; i <= n; i++) {
    10         for (int j = 1; j <= i; j++) {
    11             cin >> a[i][j];
    12         }
    13     }
    14     for (int i = 1; i <= n; i++) { //全部初始化为-INF 
    15         for (int j = 0; j <= i + 1; j++) { //注意每行多初始化一个 
    16             dp[i][j] = - INF;
    17         }
    18     }
    19     dp[1][1] = a[1][1]; //边界 
    20     for (int i = 2; i <= n; i++) { //从第2行开始做 
    21         for (int j = 1; j <= i; j++) {
    22             dp[i][j] = max(dp[i - 1][j - 1] + a[i][j], dp[i - 1][j] + a[i][j]);
    23         }
    24     }
    25     int res = -INF;
    26     for (int i = 1; i <= n; i++) { //遍历最后一行找最大值 
    27         res = max(res, dp[n][i]);
    28     }
    29     cout << res << endl;
    30     return 0;
    31 }
  • 相关阅读:
    mysql联合索引命中条件
    Shiro知识初探(更新中)
    Java中使用MongoTemplate进行分批处理数据
    Java中String时间范围比较
    使用ReentrantLock
    使用Condition
    python的坑--你知道吗?
    python基础--函数全解析(1)
    CSS基本语法及页面引用
    HTML学习汇总
  • 原文地址:https://www.cnblogs.com/fx1998/p/12833786.html
Copyright © 2011-2022 走看看