LeetCode OJ 之 Triangle (三角形)
2014-11-16 11:40
393 查看
题目:
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.给定一个三角形,发现从上最下,找出和为最小的路径。每一个步骤,你只能移动到低于该行上的相邻的数字。
For example, given the following triangle
[ [2], [3,4], [6,5,7], [4,1,8,3] ]
The minimum path sum from top to bottom is
11(i.e., 2 + 3 + 5 + 1 =
11).
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
思路:
把三角形看成如下这样的矩阵[ [2], [3,4], [6,5,7], [4,1,8,3] ]
设状态f(i,j)表示从(i,j)出发,路径的最小和,采用自底向上的动态规划方法,
从下往上遍历,则有状态方程:f(i,j)=min(f(i+1,j),f(i+1,j+1))+(i,j)。
代码:
class Solution { public: int minimumTotal(vector<vector<int> > &triangle) { //设状态f(i,j)表示从(i,j)出发,路径的最小和 //从下往上遍历,则有状态方程:f(i,j)=min(f(i+1,j),f(i+1,j+1))+(i,j) //采用自底向上的动态规划方法 for(int i = triangle.size()-2 ; i >=0 ; i--)//i第一次取倒数第二行 { for(int j = 0 ; j < i+1 ; j++) { triangle[i][j] = min(triangle[i+1][j] , triangle[i+1][j+1]) + triangle[i][j]; } } return triangle[0][0]; } };
相关文章推荐
- LeetCode OJ:Triangle(三角形)
- POJ 3675/2986(Telescope/A Triangle and a Circle-三角形与圆的面积并)
- 写一个程序,定义抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形)
- 【OpenGL】理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式
- PKU2079 Triangle 点集最大三角形面积
- UVA 11186 Circum Triangle (枚举三角形优化)(转)
- 射线和三角形的相交检测(ray triangle intersection test)
- 问题三十四: 任意输入三条边(a,b,c实型),若能构成三角形,则计算并输出其面积,否则输出标志“No Triangle!”。
- [USACO Open10]数三角形Triangle Counting解题报告
- POJ 2079 Triangle(旋转卡壳计算平面点集最大三角形面积)
- Project Euler 102:Triangle containment 包含原点的三角形
- 树上三角形(triangle) 基于LCT上的暴力
- 倒三角形(triangle)
- 理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式
- poj 2079 Triangle,旋转卡壳求点集的最大三角形
- Triangle三角形的最小路径和
- 算法竞赛入门经典 习题1-9 三角形(triangle)
- 第13周任务3(定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形))
- JAVA第五周实验(一).封装一类三角形对象Triangle
- 倒三角形triangle