js:数据结构笔记14--高级算法
2014-10-25 12:04
429 查看
动态规划:
递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题;
动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案;
背包问题:
递归解决:
动态规划:
递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题;
动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案;
function dynFib(n) { var val = []; for(var i = 1; i <= n; ++i) { val[i] = 1; } if(n === 1) { return 1; } else { for(var i = 2; i <= n; ++i) { val[i] = i * val[i-1]; } return val ; } } function iterFib(n) { var last = 1, result = 1; for(var i = 2; i <= n; ++i) { result = last * i; last = result; } return result; }
背包问题:
递归解决:
function max(a,b) { return (a > b) ? a : b; } function knapsack(capacity,size,value,n) { if(n == 0 || capacity ==0) { return 0; } if(size[n -1] > capacity) { return knapsack(capacity,size,value,n-1); } else { return max(value[n - 1] + knapsack(capacity - size[n - 1],size,value,n-1), knapsack(capacity,size,value,n-1)); } } var value = [4,5,10,11,13], size = [3,4,7,8,9], capacity = 16, n = 5; console.log(knapsack(capacity,size,value,n));
动态规划:
function max(a,b) { return (a > b) ? a : b; } function dknapsack(capacity,size,value,n) { var k = []; for(var i = 0; i <= capacity + 1; ++i) { k[i] = []; } for(var i = 0; i <= n; ++i) { for(var w = 0; w <= capacity; ++w) { if(i == 0 || w == 0) { k[i][w] = 0; } else if(size[i - 1] <= w) { k[i][w] = max(value[i - 1] + k[i - 1][w - size[i - 1]], k[i - 1][w]); } else { k[i][w] = k[i - 1][w]; } } } return k [capacity]; } var value = [4,5,10,11,13], size = [3,4,7,8,9], capacity = 16, n = 5; console.log(dknapsack(capacity,size,value,n));
相关文章推荐
- js:数据结构笔记13--检索算法
- js-JavaScript高级程序设计学习笔记14
- 数据结构和算法笔记(3)
- 数据结构与算法 学习笔记
- 数据结构和算法分析学习笔记(三)--二叉查找树的懒惰删除(lazy deletion)
- JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
- JavaScript高级程序设计 阅读笔记(十九) js表格排序
- 数据结构和算法学习笔记(1)
- JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
- 高级数据结构设计--并查集及实现学习笔记(有趣篇)
- JavaScript高级程序设计 学习笔记 js高级技巧
- JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
- js高级编程笔记
- js高级编号笔记[新]-typeof,标签循环,with,大小写敏感
- js高级编号笔记[新]-函数
- js 高级程序设计笔记
- 算法导论学习笔记-第十四章-数据结构的扩张
- js高级编号笔记[新]-容错
- js高级编号笔记[新]-9个核心对象
- 算法导论学习笔记(15)——用于不相交集合的数据结构