时间:2021-05-20
本文实例讲述了C#使用动态规划解决0-1背包问题的方法。分享给大家供大家参考。具体如下:
// 利用动态规划解决0-1背包问题using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Knapsack_problem// 背包问题关键在于计算不超过背包的总容量的最大价值{ class Program { static void Main() { int i; int capacity = 16; int[] size = new int[] { 3, 4, 7, 8, 9 }; // 5件物品每件大小分别为3, 4, 7, 8, 9 //且是不可分割的 0-1 背包问题 int[] values = new int[] { 4, 5, 10, 11, 13 }; // 5件物品每件的价值分别为4, 5, 10, 11, 13 int[] totval = new int[capacity + 1]; // 数组totval用来存贮最大的总价值 int[] best = new int[capacity + 1]; // best 存贮的是当前价值最高的物品 int n = values.Length; for (int j = 0; j <= n - 1; j++) for (i = 0; i <= capacity; i++) if (i >= size[j]) if (totval[i] < (totval[i - size[j]] + values[j])) // 如果当前的容量减去J的容量再加上J的价值比原来的价值大, //就将这个值传给当前的值 { totval[i] = totval[i - size[j]] + values[j]; best[i] = j; // 并把j传给best } Console.WriteLine("背包的最大价值: " + totval[capacity]); // Console.WriteLine("构成背包的最大价值的物品是: " ); // int totcap = 0; // while (totcap <= capacity) // { // Console.WriteLine("物品的大小是:" + size[best[capacity - totcap]]); // for (i = 0; i <= n-1; i++) // totcap += size[best[i]]; // } } }}希望本文所述对大家的C#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了PHP贪婪算法解决0-1背包问题的方法。分享给大家供大家参考。具体分析如下:贪心算法解决0-1背包问题,全局最优解通过局部最优解来获得!比动态规划
本文实例分析了PHP动态规划解决0-1背包问题。分享给大家供大家参考。具体分析如下:背包问题描述:一个承受最大重量为W的背包,现在有n个物品,每个物品重量为t,
本文实例讲述了C++动态规划之背包问题解决方法。分享给大家供大家参考。具体分析如下:问题描述:背包的最大容量为W,有N件物品,每件物品重量为w,价值为p,怎样选
本文实例讲述了Python基于回溯法子集树模板解决0-1背包问题。分享给大家供大家参考,具体如下:问题给定N个物品和一个背包。物品i的重量是Wi,其价值位Vi,
本文实例讲述了PHP回溯法解决0-1背包问题的方法。分享给大家供大家参考。具体分析如下:这段代码是根据《软件设计师》教程的伪代码写的;最麻烦的不是伪代码改成ph