[leetcode] 120 Triangle
来源:互联网 发布:便携式蓝牙打印机软件 编辑:程序博客网 时间:2024/05/29 04:58
感觉acm做过之后,这种题太基本了....
没啥好说的,最简单的动态规划,找出状态转移方程就可以了。采用由下到上的思想(这样最后只需要取出dp[0][0]就是答案),本层每个结点的结果根据下面一行的路基累计和而计算,要么取左边的,要么取右边的,两者取最小的即可。
状态转移方程:triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1])
class Solution {public: int minimumTotal(vector<vector<int> > &triangle) { for (int i = triangle.size() - 2; i >= 0; --i) for (int j = 0; j <= i; ++j){ triangle[i][j] +=min(triangle[i+1][j+1],triangle[i+1][j]); } return triangle[0][0]; }};类似的题目还有 hdu 2084的数塔,和本题的解法一致。
稍微进阶一点的: hdu 1176 免费馅饼
思路:可将所有的时间段和馅饼看成是一个矩阵,时间就是行数,掉馅饼的就是列数,则就是数字三角形问题,从最底层找一条路径,使得路径上的和最大。状态转移方程为:dp[i][j]=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j-1])+pie[i][j]。pie[i][j]为时间i时在j位置掉的馅饼数目。
具体代码这里就不贴出了,大家尽量去实现一下。
1 0
- Leetcode 120 Triangle
- LeetCode 120: Triangle
- LeetCode(120)Triangle
- LeetCode: Triangle [120]
- LeetCode 120 Triangle
- LeetCode 120 Triangle
- [leetcode 120] Triangle
- [Leetcode 120, Medium] Triangle
- leetcode || 120、Triangle
- Triangle - LeetCode 120
- Leetcode[120]-Triangle
- LeetCode(120) Triangle
- Leetcode #120 Triangle
- [leetcode-120]Triangle(c++)
- leetcode 120: Triangle
- 【LeetCode】(120)Triangle (Medium)
- [leetcode] 120 Triangle
- LeetCode 120: Triangle
- $.ajax()方法详解
- $.ajax()方法详解
- Objective-C 的Runtime的学习
- Android最小屏幕适配
- 互联网架构师必备技能(使用markdown编写)
- [leetcode] 120 Triangle
- 智能算法求解器,内含NSGAII,PSO,SMPSO等智能算法
- mybatis中字符实体报错
- .net开发中用BackgroundWorker实现多线程
- poj 2590 水题贪心
- 51nod 1305 Pairwise Sum and Divide (数学)
- 新生代Eden与两个Survivor区的解释
- Spring事务配置
- NYOJ27 水池数目