Jump to content
php.lv forumi

Ka izveidot "katrs ar katru" sistēmu?


LoyC

Recommended Posts

Ja cilvēku kārtība nav svarīga (1 un 2 ir tas pats kas 2 un 1), tad būs tikai 45 varianti (10!/2!/8! - kombinācija). Ja kārtība ir svarīga, tad būs 90 varianti (10!/8! - permutācija).

To 90 variantu kods izskatītots apmēram šādi (pseidokodā):

masivs = [...]; // visi elementi
for (i=0; i<count(masivs); i++)
{
 for (j=0; j<count(masivs); j++)
 {
if (i != j)
{
	print masivs[i], masivs[j]
}
 }
}

Link to comment
Share on other sites

Ja kārtība ir svarīga, tad būs 90 varianti (10!/8! - permutācija).

 

vai tad tā nebūs variācija bez atkārtojumiem??? .... nu īstenībā tas nav tik svarīgi :)

 

šitā laikam būs ja kārtība nav svarīga...

 

masivs = [...]; // visi elementi
for (i=0; i<count(masivs); i++)
{
 for (j=i; j<count(masivs); j++)
 {
if (i != j)
{
	print masivs[i], masivs[j]
}
 }
}

Edited by gaziks52
Link to comment
Share on other sites

Šo itkā sapratu. Bet vai varētu vēl sarezģītāku ar nosacijumu, ka tas pats cilveks neatkartojas kamēr visi citi nav izvadīti.

Tas būtu ja ņem 4 cilvekus tikai:

1-2

3-4

1-3

2-4

utt.

Nevis:

1-2

1-3

1-4

2-3

utt.

Link to comment
Share on other sites

Un kurš tādā gadījumā uzģenerēs kombināciju 3 0, vai jebkuru citu formā N M, kur M<N ?

 

nu izskatās ka autors prasa bez atkārtojumiem tātad tas nemaz nav vajazdīgs tas 3 0...

 

Šo itkā sapratu. Bet vai varētu vēl sarezģītāku ar nosacijumu, ka tas pats cilveks neatkartojas kamēr visi citi nav izvadīti.

Tas būtu ja ņem 4 cilvekus tikai:

1-2

3-4

1-3

2-4

utt.

Nevis:

1-2

1-3

1-4

2-3

utt.

 

nu bet tas pats vien jau būs tikai secība cita...

 

tas ko tev vajag...

1-2

3-4

1-3

2-4

1-4

2-3

 

tas kas sanāk ar to algoritmu

1-2

1-3

1-4

2-3

2-4

3-4

Edited by gaziks52
Link to comment
Share on other sites

nu viens veids kā to izdarīt ir salikt rezultātus masīvā...

 

mas[0]='1-2'
mas[1]='1-3'
mas[2]='1-4'
mas[3]='2-3'
mas[4]='2-4'
mas[5]='3-4'

for(i=0; i<count(mas)/2; i++) {
  print mas[i];
  print mas[count(mas)+i+1];
}

 

gan jau ka var vienkāršāk bet šitajam arī vajadzētu iet ..

Link to comment
Share on other sites

Man sanāca, ka šādi var:

<?php
// (c) codez
$teams=19;
if ($teams%2==1) {$teams++;}
echo 'Teams:'.$teams.'<br />';
for ($i=2;$i<=$teams;$i++){
 echo '1:'.$i;
 for ($j=1;$j<($teams/2);$j++){
$t1=($i+$j-2)% ($teams-1)+2;
$t2=($teams+$i-$j-3)% ($teams-1)+2;
echo ' | '.$t1.':'.$t2;	  
 }
 echo '<hr />';  
}
?>

Ja ir nepāra skaits komandu, tad pieliekam 1 klāt un tā komanda, kuru iepāro ar lieko, izlaiž to raundu.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...