Recursion 递归背包(分治)

Recursion 递归背包(分治),recursion,knapsack-problem,Recursion,Knapsack Problem,我已经想了三天了。这是我大学两周一次的任务之一。然而,我遇到了一个障碍。任何帮助都将受到感激 到目前为止,我已经了解了任务的具体内容: 我必须使用一个Item类来定义(获取和设置)权重和 东西的价值 表arrayList包含的值和权重 项目数组填充列表 检查最大值填充(贪婪)是否合适 在袋子的容量内,从 包中的表arrayList arrayList 返回包列表 到目前为止,我编写的方法(似乎不起作用): publicstaticarraylistgreedyselection(Item[]s

我已经想了三天了。这是我大学两周一次的任务之一。然而,我遇到了一个障碍。任何帮助都将受到感激

到目前为止,我已经了解了任务的具体内容:

  • 我必须使用一个Item类来定义(获取和设置)权重和 东西的价值
  • 表arrayList包含的值和权重
    项目数组填充列表
  • 检查最大值填充(贪婪)是否合适 在袋子的容量内,从
    包中的表arrayList arrayList
  • 返回包列表
  • 到目前为止,我编写的方法(似乎不起作用):

    publicstaticarraylistgreedyselection(Item[]stuffList,int-Capacity)
    {
    ArrayList包=新的ArrayList();
    ArrayList Table=新的ArrayList();
    对于(int i=0;i}
    您的代码有几个问题。您没有关注递归算法的基本原则:

    • 检查你是否已经“触底”
    • 如果是,返回简单的结果
    • 如果没有,则执行一个简单的操作,然后在剩余的任务上重复执行
    对于这个例程,您需要弄清楚

    • 当你“触底”时:当你不能添加任何其他内容时
    • 这一点的简单结果是什么?只需归还现有的行李
    • 再次发生,你把最有价值的东西(贪婪)放进袋子里,称自己为新的状态。情况如何?至少,您需要调整项目列表、行李内容和剩余容量
    请注意,您的初始状态必须在调用程序中设置并传递到例程中


    这会让您有所行动吗?

    提示:您创建一个空列表,对每个元素执行一些操作(没有任何元素,它仍然是空的),然后返回。此外,您是否知道您现在拥有的既不是递归的,也不是贪婪的?欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布代码并准确描述问题之前,我们无法有效地帮助您。具体来说,您没有跟踪执行并发布输出。如果你有,你会看到基本的问题。最重要的是,这个例程不是递归的:它不调用自己。