C# 找到一组与数字相等的数字
我正在尝试编写一个c#程序,该程序具有以下功能:C# 找到一组与数字相等的数字,c#,algorithm,C#,Algorithm,我正在尝试编写一个c#程序,该程序具有以下功能: 接受两个参数:对象列表和数字 遍历列表并找到与该数字相等的第一组对象 如果找到一个集合并返回该集合,则停止迭代 所以,我有一个用户定义对象的列表,比如说Person。比如说,Person对象有两个字段,Name和age。比如说, MyList - Person1: John, 10 - Person2: Mary, 25 - Person3: Mike, 35 - Person4: Ann, 20 - Person5: Joe
MyList
- Person1: John, 10
- Person2: Mary, 25
- Person3: Mike, 35
- Person4: Ann, 20
- Person5: Joe, 5
我想从列表中找到一个集合,它等于我要传递的数字。如果我在传递上面的列表和50,我想返回Person2,Person4,Person5作为列表。这是
不幸的是,它是NP完全的,所以没有已知的多项式解
但是,它确实有一个,即使用下一个递归函数:
f(i,0) = true
f(0,k) = false (k != 0)
f(i,k) = f(i-1,k) or f(i-1,k-weight[i])
使用f(n,W)
运行时,如果存在这样的解决方案,则生成true,否则生成false
动态规划解决方案填充了一个表,表满后,您需要从表[n][W]
中“回溯”您的步骤,以便找到应该包含在集合中的项目。
有关从表中获取实际元素的更多信息,请参见这听起来像是一个家庭作业问题。你说你在“尝试写作”,那么告诉我们你尝试了什么,什么不起作用。@Romoku:这本身不是问题。这里的问题是OP自己没有尝试任何东西,或者至少他没有向我们展示他尝试了什么以及这有什么问题。这里搜索的关键词是“0/1背包问题”。这是我们的。它是NP完全的,可以在
O(2^n)
上使用蛮力求解,或者在O(W*n)
上使用DP求解,其中n
是输入集中的元素数,W
是输入数。