Recursion 递归背包(分治)
我已经想了三天了。这是我大学两周一次的任务之一。然而,我遇到了一个障碍。任何帮助都将受到感激 到目前为止,我已经了解了任务的具体内容:Recursion 递归背包(分治),recursion,knapsack-problem,Recursion,Knapsack Problem,我已经想了三天了。这是我大学两周一次的任务之一。然而,我遇到了一个障碍。任何帮助都将受到感激 到目前为止,我已经了解了任务的具体内容: 我必须使用一个Item类来定义(获取和设置)权重和 东西的价值 表arrayList包含的值和权重 项目数组填充列表 检查最大值填充(贪婪)是否合适 在袋子的容量内,从 包中的表arrayList arrayList 返回包列表 到目前为止,我编写的方法(似乎不起作用): publicstaticarraylistgreedyselection(Item[]s
项目数组填充列表
包中的表arrayList arrayList
publicstaticarraylistgreedyselection(Item[]stuffList,int-Capacity)
{
ArrayList包=新的ArrayList();
ArrayList Table=新的ArrayList();
对于(int i=0;i }
您的代码有几个问题。您没有关注递归算法的基本原则:
- 检查你是否已经“触底”
- 如果是,返回简单的结果
- 如果没有,则执行一个简单的操作,然后在剩余的任务上重复执行
- 当你“触底”时:当你不能添加任何其他内容时
- 这一点的简单结果是什么?只需归还现有的行李
- 再次发生,你把最有价值的东西(贪婪)放进袋子里,称自己为新的状态。情况如何?至少,您需要调整项目列表、行李内容和剩余容量
这会让您有所行动吗?提示:您创建一个空列表,对每个元素执行一些操作(没有任何元素,它仍然是空的),然后返回。此外,您是否知道您现在拥有的既不是递归的,也不是贪婪的?欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布代码并准确描述问题之前,我们无法有效地帮助您。具体来说,您没有跟踪执行并发布输出。如果你有,你会看到基本的问题。最重要的是,这个例程不是递归的:它不调用自己。