我偶然发现了一个涵盖 Big O 的免费 CodeAcademy 类(class),直到我遇到一个特定问题为止。这看起来很简单,但我不知道为什么我遇到这么困难。
var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];
任何人都可以提供一些关于我如何打印出该数组中所有可能的配对组合的见解吗?例如,它应该打印如下
Alice, Bob
Dave, Mark
Ed, Lisa
此外,它还表示任何对都不应该与自身配对,或者重复已经存在的对。例如,如果我们已经有“Ed,Lisa”,则它永远不应该打印“Lisa,Ed”。
我开始了两个 for 循环,然后合法地不知道从哪里开始,令人沮丧!
var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];
for(var i = 0; i < people.length; i++){
for(j = 0; j < people.length; j++) {
// some fancy stuff here
}
}
解决方案实际上并不需要使用 Javascript(但会很好),也许 PHP 或 Java 也可以。
最佳答案
您可以使用 2 个 for
循环来获取所有组合。想法是通过迭代列表来修复每对中的第一个元素并更改第二个元素。现在的问题是第二个循环应该从哪里开始迭代?
我们不需要一对具有相同元素的元素,因此这里i 不能与 j (i!=j) 相同
并且我们不需要一对(B, A)
是 (A,B)
已在列表中。因此,从 i+1
开始对内部循环进行迭代,确保如果已经打印了 (A, B)
。
var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];
var total_people = people.length;
for(var i=0;i<total_people;i++)
{
for(var j=i+1;j<total_people;j++)
{
document.write(people[i]+" , "+people[j]+"<br>");
}
}
关于javascript - 打印数组中字符串对的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343878/