Java 邀请最多人数的人,这样每个人都认识A人而不认识B人

Java 邀请最多人数的人,这样每个人都认识A人而不认识B人,java,algorithm,logic,max,Java,Algorithm,Logic,Max,我在面试中遇到了问题/逻辑问题。基本上,问题是在提供以下信息的情况下,计算出可以被邀请参加聚会的最大人数: 1总共有X个人 2.这些人之间的友谊共达30多年 聚会上的每个人都必须认识M个人 聚会上的每个人都不能认识N个人 人们之间友谊的清单 这里有一个例子 总共16人 2 9友谊6个人 每个被邀请的人必须确切地知道另外两个人是他们的朋友 4每个被邀请的人都不能确切地知道另一个人,不能与他们成为朋友 5友谊如下所示,每个人都有一个从1到N的唯一标识符,其中N是总人数,在本例中为6: 1 2表示1和

我在面试中遇到了问题/逻辑问题。基本上,问题是在提供以下信息的情况下,计算出可以被邀请参加聚会的最大人数:

1总共有X个人 2.这些人之间的友谊共达30多年 聚会上的每个人都必须认识M个人 聚会上的每个人都不能认识N个人 人们之间友谊的清单

这里有一个例子

总共16人 2 9友谊6个人 每个被邀请的人必须确切地知道另外两个人是他们的朋友 4每个被邀请的人都不能确切地知道另一个人,不能与他们成为朋友

5友谊如下所示,每个人都有一个从1到N的唯一标识符,其中N是总人数,在本例中为6:

1 2表示1和2认识/是朋友 1 3表示1和3认识/是朋友 1 4 1 5 2 3 3 4 4 5 5 2 6.2

使用此输入,当您邀请2、3、4和5人时,最多可能邀请4人。如果有人能向我解释如何在没有特定语言的情况下在Java/算法中找到最大值,那就太棒了

如果这个问题在其他地方,我很抱歉,我真的不太确定这种类型的问题/算法叫什么,我无法用我能想到的有限数量的搜索词找到它


非常感谢。

解决这类问题的最简单方法是对所有组合进行彻底搜索。在您的案例中,您希望测试可能被邀请者集合中的所有人员组合。有一个相当简单的递归算法可以做到这一点。我将提供伪代码让您开始使用它:

findSolution(invitees, others)
    if conditions are met by invitees
        add invitees to set of solutions
    if there are others to test
        remove first item from others 
        findSolution(invitees, others)
        add first item to invitees
        findSolution(invitees, others)
        remove first item from invitees

没有解释的否决票是没有帮助的。它们还可以阻止新用户寻求帮助或建议。我认为应该尽可能避免新用户的否决问题。对于那些我建议相反的方法:解释而不向下投票。要获得帮助,我建议您尝试解决它,并将代码添加到问题中,指向特定问题成员已知+编号未知+self=4。