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

我正在尝试编写一个c#程序,该程序具有以下功能:

  • 接受两个参数:对象列表和数字
  • 遍历列表并找到与该数字相等的第一组对象
  • 如果找到一个集合并返回该集合,则停止迭代
  • 所以,我有一个用户定义对象的列表,比如说Person。比如说,Person对象有两个字段,Name和age。比如说,

    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
    是输入数。