我正在为比赛编写程序,我需要比所有其他竞争对手都快。为此,我需要一点算法帮助;理想情况下,我会使用最快的算法。
对于这个问题,我得到了两件事。第一个是元组列表,每个元组正好包含两个元素(字符串),每个元素代表一个项目。第二个是一个整数,表示总共有多少个唯一项。例如:
# 项目 = 3
[("ball","chair"),("ball","box"),("box","chair"),("chair","box")]
相同的元组可以重复/它们不一定是唯一的。)我的程序应该计算出当项目分为两组时可以“同意”的最大元组数。这意味着如果将所有项目分成两个理想组,即组 1 和组 2,那么第 1 组中的第一个项目和第 2 组中的第二个项目的最大元组数是多少。
例如,我之前的例子的答案是 2,第 1 组中有“ball”,第 2 组中有“chair”和“box”,满足前两个元组。我不一定需要知道哪些项目属于哪个组,我只需要知道满足的元组的最大数量是多少。
目前我正在尝试一种递归方法,但它在 (n^2) 上运行,在我看来效率太低了。有没有人有一种方法可以产生更快的算法?
谢谢!!!!!!!!!!