我偶然发现了一个涵盖Big O的免费CodeAcademy课程,并且在我遇到一个特定问题之前就已经过去了.这似乎很容易,但我不知道为什么我这么艰难.
var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一些见解,我将如何打印出这个阵列中所有可能的对组合?例如,它应该打印出来
Alice, Bob
Dave, Mark
Ed, Lisa
Run Code Online (Sandbox Code Playgroud)
此外,它说没有一对应该与自己配对,或重复已经存在的配对.例如,如果我们已经有"Ed,Lisa",它就不应该打印"Lisa,Ed".
我开始两个循环,然后合法只是不知道从那里去哪里令人沮丧!
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
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案实际上并不需要在Javascript中(但会很好),也许PHP或Java也可以工作.
您可以使用2个for循环来获取所有组合.想法是修复第一个元素并通过迭代列表来更改每对中的第二个元素.现在的问题是第二个循环从哪里开始进行迭代?
我们不需要一对具有使这里相同的元素i can't be same as j (i!=j),我们不需要对(B,A)是(A,B)已经在列表中.因此,开始对内部循环进行迭代,i+1从而确保(B,A)在已经打印的情况下不会打印(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>");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |