最小和(sicily算法)
来源:互联网 发布:淘宝商品详情页面html 编辑:程序博客网 时间:2024/06/14 04:17
1.题目要求
从数列A[0], A[1], A[2], …, A[N-1]中选若干个数,要求对于每个i(0<=i
2.算法分析
动态规划,对于n个数的最小和,需要比较三种情况:(A[i-1], a[i] + A[i-1], a[i] + A[i - 2]),取三者中最小的一个,但是对于A[i], A[i] = min(A[i] + A[i - 1], A[i] + A[i - 2]);
3.代码实现
#include <iostream>#include <vector>using namespace std;// dynamic programmingint min(int a, int b) { return a < b ? a:b;}class Solution {public: int minSum(vector<int>& A) { int n = A.size(); if (n == 0) return 0; int result = A[0]; for (int i = 0; i < n; ++i) { if (i < 2) { result = min(A[i], result); } else { A[i] = min(A[i] + A[i - 1], A[i] + A[i - 2]); result = min(A[i-1], A[i]); } } return result; }};int main() { int n; cin >> n; vector<int> data; int num; for (int i = 0; i < n; ++i) { cin >> num; data.push_back(num); } cout << "result: " << minSum(data) << endl; return 0;}
同样的,有很相似的题目,但是求解的是最大和
参考链接:http://blog.csdn.net/u012247338/article/details/73825197
阅读全文
0 0
- 最小和(sicily算法)
- [Sicily 1090 Highways] 求最小生成树的两种算法(普里姆算法/克鲁斯卡尔算法)
- 算法(十二)最小和
- 二维数组最小路径和(算法)
- (算法)求最大公约数和最小公约数
- 算法练习(31):最小和
- 算法期中 最小和
- 最小生成树(kruskal算法)和 (Prime算法)
- 最小生成树(Prim算法和Kruskal算法)
- 算法导论--最小生成树(Kruskal和Prim算法)
- Prim算法和Kruskal算法(最小生成树)
- 最小生成树-Prim算法和Kruskal算法(转)
- 最小生成树-Prim算法和Kruskal算法(转)
- 算法期中1005. 最小和
- 算法期中 : 1005. 最小和
- Sicily 最大和 | 期末算法机考模拟题
- 最小生成树算法(Prim和Kruskal)
- 最小生成树算法(Prim和Kruskal)
- collect2.exe: error: ld returned 1 exit status
- arcgis api for js 加载百度地图
- 【Scikit-Learn 中文文档】分解成分中的信号(矩阵分解问题)
- retrofit 用mvp实现
- 51nod1406 与查询 dp
- 最小和(sicily算法)
- python数据结构详细解析
- 小心情
- SQL语句之ORDER BY子句
- 归并排序
- EventBus传值及生成索引
- 可持久化学习总结
- 网络获取gson数据解析(老办法)
- 【Scikit-Learn 中文文档】协方差估计 / 经验协方差 / 收敛协方差 / 稀疏逆协方差 / Robust 协方差估计