Portál AbcLinuxu, 11. května 2024 04:49


Dotaz: Vsetky mozne kombinacie

25.2.2012 10:37 MatusT
Vsetky mozne kombinacie
Přečteno: 153×
Odpovědět | Admin
Snazim sa riesit kombinacie. Napisal som jednoduchu rekurzivnu funkciu ktora by mala vyhodit kombinacie prvkov v poli.
Napr: pole je [1, 2, 3] tak kombinacie su 123; 12; 1; 23; 3;.
Iba sa ucim s rekurziou a nechapem preco mi vyhadzuje aj kombinacie typu: 22.
Budem vdacny za radu :).
def combinations level, mainArray, currentArray
  if level != mainArray.size then            # ak nedosiel na koniec
     for i in level..(mainArray.size-1) do  # prejde vsetky moznosti s dalsim cislom
	
	for j in 0..(currentArray.size-1) do # vypise aktualnu kombinaciu
	  print currentArray[j]
	end
	puts
	
	combinations(level + 1, mainArray, currentArray + [mainArray[i]])
     end
  end
end

combinations 0, [1, 2, 3], []
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.2.2012 11:03 l4m4
Rozbalit Rozbalit vše Re: Vsetky mozne kombinacie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protože v každé úrovni bereš čísla z celého pole. Je zapotřebí je brát pouze od poslední použité posice do konce. Viz např.

http://www.abclinuxu.cz/poradna/programovani/show/354208

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.