【问题标题】:How to find a family in a group of individuals如何在一群人中找到一个家庭
【发布时间】:2018-07-17 13:11:59
【问题描述】:

假设我有一组潜在的家庭成员。我将家庭定义为一组个体,其中包含一个或两个成年人(18 岁以上)和最多 9 个孩子(24 岁以下),但条件是每个孩子必须至少比 15 岁小两个成年人。

一个例子:

id: 1    age: 14
id: 2    age: 25
id: 4    age: 6
id: 5    age: 35
id: 6    age: 50
id: 7    age: 44

潜在的家庭是:

{1, 4, 5, 6}, {1, 4, 5, 7}, {1, 4, 6, 7}, {14, 25, 6, 6, 7}, ...

我想找到集合的每个家庭子集。由于这个年龄间隔,我真的不知道如何进行,这对每一对人来说都是特定的。我真的不知道如何从中形成子集。

在下一步中,我将选择成员最多的家庭。提前谢谢你

【问题讨论】:

  • 如果你需要找到一个成员最多的家庭,你不需要枚举所有的家庭,那会浪费时间。
  • 我都找不到解决这些问题的办法。
  • 您并没有表现出自己解决这个问题的努力,即使是寻找最大家庭的简单案例也是如此。我什至不确定你是否理解这个问题,因为你想要的输出将 id 与年龄混淆了。这表明您需要一些时间与本地导师一起进行问题分析,而不是 Stack Overflow。
  • 感谢您的建设性意见。这显然是一个错字。
  • 您对以下答案的评论包括勾选“如果最年长的人太老”,显然是在谈论选择父母时。父母是否有上限 - 或者您是否切换上下文以寻找孩子?

标签: algorithm set grouping subset


【解决方案1】:

寻找成员最多的家庭的算法

  1. 年龄排序
  2. 取 2 个最高年龄(称为:P1、P2)
  3. age <= Min(P1, P2) - 15的排序年龄中找到名为eldestChildAge的最高年龄的索引
  4. 现在将排序后年龄小于eldestChildAge的所有元素都考虑到这个家族中(包括eldestChildAge,最多9个)

希望这能帮助你理解。

【讨论】:

  • 这是一个好方法。我将以此为基础我的算法。但是也有一些问题:一个家庭可以由一个或两个成年人组成。所以我必须对这个算法进行两次迭代。再说了,我还要检查一下大人是不是成年人,如果大人太小,我可以停下来。如果最年长的人太老,我将不得不寻找第二年长的人,依此类推。当然,这没什么大不了的,但是到处都有这些限制让我很烦恼。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2010-09-28
  • 2023-02-11
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
相关资源
最近更新 更多