当前位置: 首页 > news >正文

电气毕业设计代做网站公司营销型网站开发

电气毕业设计代做网站,公司营销型网站开发,大连开发网站,苏州百度推广公司数据结构与算法之背包问题 一、C 实现 背包问题 及代码详解二、C 实现 背包问题 及代码详解三、Java 实现 背包问题 及代码详解 背包问题是一个经典的优化问题#xff0c;也是计算机科学中的经典问题之一。它的核心思想是#xff0c;在有限的容量下#xff0c;如何选择物品 实现 背包问题 及代码详解三、Java 实现 背包问题 及代码详解 背包问题是一个经典的优化问题也是计算机科学中的经典问题之一。它的核心思想是在有限的容量下如何选择物品使得其总价值最大。 具体来说背包问题可以分为0-1背包问题和分数背包问题两种类型。 0-1背包问题指的是在有限的容量下每个物品只能选取一次。因此该问题可以抽象为一个二维数组其中行表示不同的物品列表示不同的容量数组元素表示在当前容量下选择第i个物品能够获得的最大价值。 分数背包问题指的是在有限的容量下每个物品可以选取一部分。因此该问题可以抽象为一个排序数组其中元素表示选取不同物品的单位价值然后按照单位价值从大到小进行排序。接着按照排序后的顺序依次选取物品直到达到背包的容量上限。 在实际应用中背包问题常常被用于资源分配、货物装载、投资决策、排产计划等领域是一个非常有用的工具。 一、C 实现 背包问题 及代码详解 背包问题是一道经典的动态规划问题其基本思路是设f[i][j]表示前i个物品放入一个容量为j的背包可以获得的最大价值其中第i个物品的体积为w[i]价值为v[i]。则对于第i个物品我们有两种选择放入背包或不放入背包根据这个思路我们可以得到如下的状态转移方程 f[i][j] max{ f[i-1][j], f[i-1][j-w[i]] v[i] } 其中f[i-1][j]表示不放入第i个物品时的最大价值f[i-1][j-w[i]]v[i]表示放入第i个物品时的最大价值。 以下是C语言的背包问题代码实现和详解 #include stdio.h #include string.h//物品数量、背包容量 #define N 5 #define V 10//物品的体积和价值注意第0个元素不使用 int w[N1] {0,2,3,5,7,9}; int v[N1] {0,3,4,7,8,10};//存储最大价值的数组 int f[N1][V1];int main() {memset(f, 0, sizeof(f)); //将f数组全部初始化为0//计算最大价值for (int i 1; i N; i) {for (int j 1; j V; j) {if (j w[i]) {f[i][j] f[i-1][j];} else {f[i][j] f[i-1][j] (f[i-1][j-w[i]]v[i]) ? f[i-1][j] : f[i-1][j-w[i]]v[i];}}}//打印最大价值printf(最大价值为%d\n, f[N][V]);return 0; }代码说明 首先定义了物品数量和背包容量的常量这里设为5和10。因此我们有5个物品背包容量为10。定义物品的体积和价值数组注意第0个元素不使用。例如第一个物品的体积为2价值为3。定义存储最大价值的二维数组f其中f[i][j]表示前i个物品放入容量为j的背包时的最大价值。初始化f数组为0。使用两个for循环遍历所有i和j的取值计算f[i][j]的最大价值。根据上述状态转移方程当背包容量小于物品体积时无法放入该物品此时f[i][j]的最大价值与f[i-1][j]相同否则f[i][j]的最大价值为f[i-1][j]和f[i-1][j-w[i]]v[i]中的较大值。其中f[i-1][j]表示不放入第i个物品时的最大价值f[i-1][j-w[i]]v[i]表示放入第i个物品时的最大价值。最后输出最大价值。 总之该代码实现了背包问题的求解其时间复杂度为O(NV)空间复杂度为O(NV)。 二、C 实现 背包问题 及代码详解 背包问题是一种经典的动态规划问题其主要思想是在有限的背包容量下选择一定数量的物品使得所选择的物品价值之和最大化。 下面以 0/1 背包问题为例介绍 C 实现和算法思路。 算法思路 0/1 背包问题指的是在背包容量固定的情况下每个物品要么选择要么不选即每个物品只能使用一次。因此我们考虑使用动态规划的方法来解决这个问题。 设 f[i][j] 表示在前 i 个物品中选择若干个物品装入容量为 j 的背包中所能获得的最大价值。则有以下状态转移方程 当第 i 个物品体积大于 j 时f[i][j] f[i-1][j]当第 i 个物品体积小于等于 j 时f[i][j] max(f[i-1][j],f[i-1][j-v[i]]w[i]) 其中v[i] 表示第 i 个物品的体积w[i] 表示第 i 个物品的价值。 代码实现 下面是 0/1 背包问题的 C 实现代码。其中n 表示物品数量m 表示背包容量w 和 v 分别表示每个物品的体积和价值。 #includebits/stdc.h using namespace std; int main(){int n,m;cinnm;int w[n1],v[n1];for(int i1;in;i){cinw[i]v[i];}int f[n1][m1];memset(f,0,sizeof(f));for(int i1;in;i){for(int j1;jm;j){if(w[i]j){f[i][j]f[i-1][j];}else{f[i][j]max(f[i-1][j],f[i-1][j-w[i]]v[i]);}}}coutf[n][m]endl;return 0; }代码解释 1.首先输入物品数量 n 和背包容量 m。 2.接着输入每个物品的体积和价值。 3.定义动态规划数组 f[n1][m1]并将其初始值全部赋为 0。 4.使用双重循环遍历每个物品和每个背包容量根据状态转移方程更新 f[i][j]。 5.输出 f[n][m]即为所求的最大价值。 总结 0/1 背包问题是一种经典的动态规划问题其算法思路简单易懂。使用动态规划可以有效地解决背包问题代码实现也比较简单。在使用动态规划解决问题时需要注意合理地定义状态以及正确地编写状态转移方程。 三、Java 实现 背包问题 及代码详解 背包问题是一种经典的动态规划问题。具体来说给定一组物品每种物品都有一个重量和一个价值需要选择一些物品放入一个背包中使得背包能够承受的重量最大并且选出的物品具有最大的总价值。 Java 实现背包问题的代码如下 public class Knapsack {static int max(int a, int b) {return (a b) ? a : b;}static int knapSack(int W, int wt[], int val[], int n) {int i, w;int[][] K new int[n 1][W 1];for (i 0; i n; i) {for (w 0; w W; w) {if (i 0 || w 0) {K[i][w] 0;} else if (wt[i - 1] w) {K[i][w] max(val[i - 1] K[i - 1][w - wt[i - 1]], K[i - 1][w]);} else {K[i][w] K[i - 1][w];}}}return K[n][W];}public static void main(String args[]) {int val[] new int[]{60, 100, 120};int wt[] new int[]{10, 20, 30};int W 50;int n val.length;System.out.println(knapSack(W, wt, val, n));} }该代码实现了动态规划的思想使用了二维数组 K 来记录每个子问题的最优解并逐步构建出最终问题的最优解。具体来说代码中的 K[i][w] 表示在背包容量为 w 时前 i 个物品的最大价值其中 i 取值从 0 到 nw 取值从 0 到 W。对于每个子问题其状态转移方程为 if (wt[i - 1] w) {K[i][w] max(val[i - 1] K[i - 1][w - wt[i - 1]], K[i - 1][w]); } else {K[i][w] K[i - 1][w]; }其中如果第 i 个物品的重量小于等于当前背包容量 w则可以将其放入背包中此时可以获得 val[i-1] 的收益但需要考虑前 i-1 个物品的最大收益即 K[i-1][w-wt[i-1]]。如果第 i 个物品的重量大于当前背包容量 w则无法将其放入背包此时背包的最大收益为前 i-1 个物品的最大收益即 K[i-1][w]。 相关变量的含义如下 W背包容量wt[]每个物品的重量数组val[]每个物品的价值数组n物品数量 在上述代码中给定的背包容量为 50三个物品的重量分别为 10、20 和 30价值分别为 60、100 和 120。运行该代码后输出的结果为 220表示最大的总价值为 220。
http://www.w-s-a.com/news/770068/

相关文章:

  • 支持api网站开发wordpress排版Markdown
  • 赤峰做网站的logo设计软件在线制作
  • iis网站批量导入苏州最新新闻事件今天
  • 甘肃省住房和城乡建设厅注册中心网站首页沈阳专业关键词推广
  • 网站怎么能在百度搜到网站开发费怎么做会计分录
  • 嘉定专业网站制作公司七星彩网站开发
  • 网站建设人员培训企业网站开发模型图
  • 自己开发一个网站应该怎么做国外设计网站 绿色的
  • 南昌外贸网站设计推广任务发布平台app
  • 建立网站成本书店网站建设可行性分析
  • 高端网站设计官网乌海学校网站建设
  • 哪些网站适合新手编程做项目优秀网页设计赏析
  • 永州网站seo德阳网站建设优化
  • 网站建设高端网站本地建设网站软件下载
  • 网站后台账号密码破解杭州酒店网站设计公司推荐
  • 和县网站开发秦皇岛建设工程信息网站
  • 国外网站用什么dns好建一个下载网站要什么cms系统
  • 礼品工艺品网站建设手机做网站哪家好
  • 泉州网站建设方案维护怎样选择网站建设
  • 江苏建站速度忿先进的网站建设
  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏
  • 特产网站设计六色网站
  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗