2017-06-03 4 views
0

Ich stolperte über einen kostenlosen CodeAcademy-Kurs, der Big O abdeckt, und kam durch, bis ich eine bestimmte Frage beantwortete. Es scheint ziemlich einfach zu sein, aber ich weiß nicht, warum ich so eine harte Zeit habe.Drucken aller möglichen Kombinationen von String-Paaren in einem Array

Kann mir jemand einen Einblick geben, wie ich alle möglichen Kombinationen von Paaren in diesem Array ausdrucken würde? Zum Beispiel sollte es ausdrucken wie

Alice, Bob 
Dave, Mark 
Ed, Lisa 

Auch er sagt, dass keines der Paare jemals mit mir selbst, oder wiederholen Sie ein bereits bestehendes Paar Paare soll. Zum Beispiel, wenn wir bereits "Ed, Lisa" haben, sollte es niemals "Lisa, Ed" drucken.

Ich begann zwei for-Schleifen, dann hatte legit nur keine Ahnung, wo von dort Frustrating!

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 
    } 
} 

Lösung nicht wirklich braucht in Javascript zu sein (aber wäre schön), vielleicht PHP oder Java funktionieren würde.

Antwort

5

Sie können 2 for Loops verwenden, um alle Kombinationen zu erhalten. Idee ist, dass das erste Element repariert und das zweite Element in jedem Paar geändert wird, indem die Liste wiederholt wird. Jetzt ist die Frage, woher sollte die zweite Schleife Iterationen durchführen?

Wir brauchen kein Paar mit dem gleichen Element so hier i can't be same as j (i!=j) und wir benötigen kein Paar ist (A,B) ist bereits in der Liste. tut Iteration für die innere Schleife von i+1 so beginnen, die sicherstellt, dass es nicht (B,A) gedruckt werden, wenn es bereits (A,B) gedruckt wird.

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>"); 
    } 
} 
+0

Ich denke, das funktioniert tatsächlich. Ich habe es in Java-Editor getestet, und ich habe nicht die "Bob, Alice" Sie erwähnt @ Jonasw –

+0

@Daniel Zuzevich ja, das war ein Fehler von mir, bereits bearbeitet meinen Kommentar –

+0

No prob. Gewinner Gewinner Huhn Abendessen! Dies ist eine nette und einfache Lösung, die einfach auf JS übertragen werden kann. Danke vielmals. Ich werde das als korrekt markieren, wenn Stack mich nach 4 min Wartezeit lässt ??? –

Verwandte Themen