码迷,mamicode.com
首页 > 其他好文 > 详细

6.数字三角形

时间:2020-07-03 10:31:36      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:class   bit   img   style   题目   图片   大致   分析   mes   

先来解释一下什么是线性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 }

 

6.数字三角形

标签:class   bit   img   style   题目   图片   大致   分析   mes   

原文地址:https://www.cnblogs.com/fx1998/p/12833786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!