java中背包的贪婪算法

java中背包的贪婪算法,java,knapsack-problem,Java,Knapsack Problem,我正试图为背包问题编写一个非常简单的贪婪算法。我的输入是两个并行阵列。一个数组包含项的值,另一个数组包含权重 我试图编写的贪婪算法如下:检查哪个项目的值最高,并将其放入背包中。然后将该项的值设置为零。再次检查哪件物品的价值最高,如果背包还能装得下,就把它放在背包里。如果它可以保存,请将该值再次设置为零(输入后),然后再次开始查找最高值。如果背包再也装不下它,那就结束程序 我知道有很多更好的贪婪算法,但在我看来,这是一个非常简单的算法,我想我可以做到这一点。我的问题是,我必须遍历整个值数组才能找到

我正试图为背包问题编写一个非常简单的贪婪算法。我的输入是两个并行阵列。一个数组包含项的值,另一个数组包含权重

我试图编写的贪婪算法如下:检查哪个项目的值最高,并将其放入背包中。然后将该项的值设置为零。再次检查哪件物品的价值最高,如果背包还能装得下,就把它放在背包里。如果它可以保存,请将该值再次设置为零(输入后),然后再次开始查找最高值。如果背包再也装不下它,那就结束程序

我知道有很多更好的贪婪算法,但在我看来,这是一个非常简单的算法,我想我可以做到这一点。我的问题是,我必须遍历整个值数组才能找到最大值。当我找到它的时候,我把它放在背包里,然后把它的值设为零。但问题是,我必须回到for循环中,找到新的最高价值项目,并将其放入背包中。但我不知道该怎么做


我是用Java写这篇文章的。

首先,您通常会贪婪地使用最高的值/重量比来解决背包问题,而不仅仅是使用值


其次,如果您对项目列表进行一次排序并一步一步地查看,则无需在每个步骤中搜索最大值。

感谢您的回复。我知道有很多方法可以使用贪婪算法来解决背包问题,我已经看到并使用了一种具有最高值/重量比的算法。我只是想尝试各种不同的方式来练习编程,因为我是一个绝对的初学者。首先对它们进行排序,然后迭代它们的问题是,我的权重索引不再对应于我的值索引,因此我无法再检查它是否仍然适合背包。我想我要做的可能是解决这个问题的方法。权重和值之间有对应关系(也就是说,它们不能任意重新排列)。目前,听起来您正在将权重和值存储在单独的数组中,并试图完全按照数组的顺序来实现这种对应。您可以通过创建一个简单的类来封装这些信息,该类保存项目的值/权重,然后您可以创建这些对象的数组并对其进行排序,而无需手动跟踪哪些权重和值属于同一个对象。