背景:
经典递归示例:背包问题
背包问题的一个例子:应该选择哪些盒子,才能使价格尽可能地大,而保持重量小于或等于15 kg?
效果:
演示地址@google code
代码:
/*
a:{
weight : weight, //当前物品重量
value : value //当前物品价值
}
*/
function knapsack(a, limitW) {
var totV = 0,
maxV = 0;
var option = [],
cop = [];
var N=a.length;
for (var i = 0;
i < a.length;
i++) {
totV += a[i].value
}
function find(i, tw, tv) {
var k;
if (tw + a[i].weight <= limitW) //考虑物品i放入背包的情况
{
cop[i] = a[i].index;
if (i < N - 1) {
find(i + 1, tw + a[i].weight, tv);
}
else {
//最佳结果形成
for (k = 0; k < N; k++) {
option[k] = cop[k];
}
maxV = tv;
}
}
if (tv - a[i].value > maxV) //考虑物品i不放入背包的情况,此状态可以剪掉部分节点
{
cop[i] = 0;
if (i < N - 1) {
find(i + 1, tw, tv - a[i].value);
}
else {
//最佳结果形成
for (k = 0; k < N; k++) {
option[k] = cop[k];
}
maxV = tv - a[i].value;
}
}
}
find(0, 0, totV);
return {
maxValue: maxV,
option: option
};
}
- 大小: 24.8 KB
- 大小: 11.8 KB
分享到:
相关推荐
JavaScript的动态类型和丰富的社区支持使得开发这样的交互式演示变得可行。这个“mcmc-demo-master”可能包含HTML、CSS和JavaScript文件,用于创建可视化界面,让用户能够输入自定义参数、观察链的演化过程,并实时...
**JavaScript 演示中的通用算法** 在JavaScript编程中,通用算法是指那些可以在不同场景下广泛应用,不依赖特定数据结构或问题的算法。这些算法通常具有很高的可复用性和灵活性,能够解决各种常见问题。"gena-demo...
3. 动态规划(Dynamic Programming):解决具有重叠子问题和最优子结构的问题,如斐波那契数列、背包问题等。 4. 贪心算法(Greedy Algorithm):每次选择局部最优解,期望达到全局最优。例如,最小生成树问题...
在JavaScript中,动态规划可以应用于求解最长公共子序列、背包问题等。 5. **图论与网络流**:图算法如Dijkstra最短路径算法、Floyd-Warshall所有对最短路径、Prim最小生成树等,这些在处理网络通信、社交网络分析...
2. "下载PPT模板.url" - 这可能链接到与旅行主题相关的PowerPoint演示文稿模板,供用户创建旅行报告或展示。 3. "下载字体.url" - 提供的可能是与模板风格匹配的特殊字体,用于增强网页的视觉效果。 4. "下载网页...
在这个项目中,作者可能通过JavaScript代码来解释和演示了一些经典的CS问题和算法,帮助开发者将理论知识应用到实际编程中。 首先,我们要理解JavaScript的基本语法。它是一种弱类型、动态类型的编程语言,支持函数...
在这个名为"js-ds-algs"的项目中,包含了对JavaScript数据结构和算法的详细注释及实际演示,旨在为学习者提供一个实践和学习的平台。 1. 数据结构: - 数组:基础的数据集合,支持索引访问。在JavaScript中,数组...
| | | | | | |背包\ Demo Laravel BackPack的演示,其中包括所有背包包装。安全更新和重大更改请订阅背包新闻,以了解有关任何安全更新,重大更改或主要功能的信息。 我们每1-2个月发送一封电子邮件。 如何使用您...
5. 动态规划:如背包问题、最长公共子序列等,通过矩阵或表格的填充来体现状态转移的过程。 此外,该应用可能还提供了用户交互功能,比如暂停、快进、快退,以及自定义输入数据,让学习者可以根据自己的节奏和需求...
SPAjs 是一个 JavaScript 库,用于管理单页 Web 应用程序的路由和视图转换。 您可以在 [高性能单页 Web 应用程序] ( )。 SPAjs 应该与 (backpack)( ) 结合使用,后者在 localStorage 中保留视图和模板。 当 ...
4. 动态规划:用于解决具有重叠子问题和最优子结构的问题,如背包问题、最长公共子序列、斐波那契数列等。动态规划可以有效地避免重复计算,提高效率。 5. 分治策略:如归并排序、快速排序等,将大问题分解为小问题...
项目中可能包含了经典的DP问题,如背包问题、最长公共子序列等。 "algorithm-demo-master"这个压缩包文件名暗示了这是项目的主要代码库,包含了上述所有算法的实现源码。通过学习和理解这些示例,开发者可以加深对...
例如,解决背包问题或最长公共子序列问题时,可以创建一个二维数组,逐行或逐列填充,确保每个单元格只计算一次。 在JavaScript中实现动态编程时,需要注意变量作用域、数组操作的性能以及如何有效地利用内存。动态...
此外,对于动态规划问题,如背包问题或最长公共子序列,用户可以观察状态转移矩阵的变化,理解动态规划背后的思路。 **学习资源与教学辅助** "visualisations"不仅是个人学习的优秀工具,也是教学辅助材料。教师...
对话框提供子问题和答案的多种选择。 还循环播放背景音乐。 有关下一步功能的详细信息,请参见我们的。 在本地启动游戏 下载并安装 下载存储库(git clone) git clone https://github.com/micahh2/hsu 更改...
算法可视化工具涵盖了多种类型的算法,包括但不限于排序(如冒泡排序、快速排序、归并排序)、查找(如二分查找、哈希查找)、图算法(如Dijkstra最短路径、Floyd-Warshall所有对最短路径)、动态规划(如背包问题、...
如背包问题、最长公共子序列等。 5. **图算法**:如深度优先搜索(DFS)、广度优先搜索(BFS)、Dijkstra最短路径算法、Floyd-Warshall所有对最短路径算法等。 Applet是Java早期的一种Web应用形式,它可以嵌入HTML...
5. **动态规划**:如背包问题、最长公共子序列等。动态规划是解决复杂优化问题的常用方法,algoVisualizer通过表格形式展示状态转移过程,帮助学习者把握其精髓。 6. **数据结构**:包括数组、链表、栈、队列、堆、...
4. **动态规划**:动态规划是一种用于求解最优化问题的算法,如背包问题、最长公共子序列、矩阵链乘法等,它通过构建状态转移方程来避免重复计算。 5. **贪心算法**:贪心策略在部分最优解的基础上构建全局最优解,...
而“现场演示”一词则暗示网站拥有互动式的产品展示功能,这可能意味着顾客可以在线上以3D形式预览产品,或是通过模拟试背的方式,直观感受背包的样式和功能,这对于提升用户购物体验和降低购买决策的不确定性具有...