博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Triangle --找三角形数组中最小的路径(重重重)
阅读量:4107 次
发布时间:2019-05-25

本文共 1486 字,大约阅读时间需要 4 分钟。

题目:

解答:

方法一:  深搜  超时。

试图剪枝,当加和大于最小值时,剪枝,这样是不对的,因为后面的数有可能是负数。

代码:

class Solution {public:	int minimumTotal(vector
> &triangle) { int min = INT_MAX; int sum = 0; search(sum, 0, 0, triangle, min); return min; } void search(int sum, int i, int row, vector
> &triangle, int &min) { if (row == triangle.size()) { if (sum < min) { min = sum; } } else { int temp = sum + triangle[row][i]; search(temp, i, row + 1, triangle, min); if (i + 1 < triangle[row].size()) { temp = sum + triangle[row][i + 1]; search(temp, i + 1, row + 1, triangle, min); } } }};
解答二:

动态规划:

转移方式: 下一行某个数和的最小值等于该数加上上一行两个数中比较小的那个数。

[     [2],    [3,4],   [6,5,7],  [4,1,8,3]]

例如: 最后一行第二个位置的sum[3][1]的最小值应该等于a[3][1]加上上一行中a[2][0]和a[2][1]和中的最小值。

代码:

class Solution {public:	int minimumTotal(vector
> &triangle) { int min = INT_MAX; int sum[200][200]; sum[0][0] = triangle[0][0]; for (int i = 1; i < triangle.size(); i++) { for (int j = 0; j < triangle[i].size(); j++) { if (j == 0) sum[i][j] = sum[i - 1][j] + triangle[i][j]; else if (j == triangle[i].size()-1) sum[i][j] = sum[i - 1][j - 1] + triangle[i][j]; else { sum[i][j] = (sum[i - 1][j] < sum[i - 1][j - 1] ? sum[i - 1][j] : sum[i - 1][j - 1]) + triangle[i][j]; } } } for (int i = 0; i < triangle[triangle.size() - 1].size(); i++) { if (sum[triangle.size() - 1][i] < min) min = sum[triangle.size() - 1][i]; } return min; }};

转载地址:http://vutsi.baihongyu.com/

你可能感兴趣的文章
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
查找最大值最小值
查看>>
杨辉三角
查看>>
冒泡排序法
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
16、Memento 备忘录模式
查看>>
Java基础篇(一)
查看>>