贪婪算法、递归计算、动态规划背包问题
来源:互联网 发布:淘宝网买短款真丝旗袍 编辑:程序博客网 时间:2024/06/12 01:42
//贪婪算法计算背包问题 public static double ksack(double[] values, double[] weights, int capacity) { double load = 0; int i = 0; double w = 0; while (load<capacity && i<values.Length) { if (weights[i] <= (capacity-load)) { w += values[i]; load += weights[i]; } else { double r = (capacity - load) / weights[i]; w += r * values[i]; load += weights[i]; } i++; } return w; }//递归计算背包问题 public static int max(int a, int b) { return a > b ? a : b; } public static int knapsack(int cappcity, int[] size, int[] value, int n) { if (n == 0 || cappcity == 0) { return 0; } if (size[n - 1] > cappcity) { return knapsack(cappcity, size, value, n - 1); } else { return max(value[n - 1] + knapsack(cappcity - size[n - 1], size, value, n - 1), knapsack(cappcity, size, value, n - 1)); } }
//动态规划背包问题 public static long dKnapsack(int cappcity, int[] size, int[] value, int n) { int[,] K = new int[n, cappcity + 1]; for (int i = 0; i < n; i++) { for (int j = 0; j < cappcity; j++) { K[i, j] = 0; } } for (int i = 0; i < n; i++) { for (int w = 0; w < cappcity; 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[n,cappcity]; }
0 0
- 贪婪算法、递归计算、动态规划背包问题
- 动态规划算法,背包问题
- 算法-动态规划-背包问题
- 贪婪方法——贪婪方法和动态规划的比较:背包问题
- 背包问题---递归及动态规划
- 动态规划6-背包问题+记忆递归
- 动态规划6-背包问题+记忆递归
- 贪婪算法和动态规划
- 贪婪算法--背包问题详解
- 贪婪算法解决背包问题
- 贪婪算法解决背包问题
- 分治算法,动态规划,贪婪算法以及递归之间的区别与联系
- 背包问题的动态规划算法
- python 版 动态规划 背包问题算法
- 背包问题 动态规划和回溯算法
- 背包问题:动态规划和贪心算法
- 01背包问题的动态规划算法
- 动态规划算法之01背包问题
- 图的深度优先搜索
- URL方案最佳实践
- WEB安全大作业:口令分析
- 使用xshell测试elasticsearch的ik分词报错问题
- QT中关于菜单的那些事
- 贪婪算法、递归计算、动态规划背包问题
- php面向对象中static静态属性和静态方法的调用
- 计算机操作系统之概述(一)
- ffmpeg 入门
- HTTP协议详解
- QUdpSocket简单的使用(局域网内发送给所有客户端消息与接收)
- 第15周项目1-验证算法(3)希尔排序
- 通过python-ldap处理ldap服务器
- 精度丢失