Egy mátrix-ot hányféleképpen lehet teljesen bejárni és mi határozza ezt meg, hogy hányféleképp lehet?
A klasszikus módszerben végigmegyek elejétől a végéig, két ciklussal, de hányféleképp lehet végigmenni, valahogy végigszámolható ez?
Lényeg az, hogy mindenegyes elemen egyszer menjek végig...
Sajnos csak Pascal-ban tudom leírni a kódot, mert más programozási nyelvet nem ismerek, de mindenki hozzászólása érdekelne, mert nem a programozási nyelv a lényeg. :(
program matrixprogram;
var
matr : array [0..9,0..9] of integer;
i, j : integer;
begin
for i := 0 to 9 do
begin
for j := 0 to 9 do
begin
matr [i,j] := 0;
end;
end;
end.
Csak hangosan gondolkozom:
A bal felsőből indulsz és a jobb felsőbe szeretnél érkezni. Minden mátrix elemben két irányba mehetsz: lefelé vagy jobbra. Így akkor a (N*M)^2 féleképpen mehetsz végig.
Viszont az alsó és a jobb oldali elemeknél csak egy irány van, így talán ((N-1)*(M-1))^2 ha N és M nagyobb 2-nél.
De lehet, hogy hülyeség...
Köszönöm, ki fogom próbálni.
Tömbnél is érdekelne, hogy elindulok bizonyos indextől és úgy érkezem vissza, hogy a tömb minden pontja érintve volt, de nem sorba ment az algoritmus.
Hányféleképp rendezhetsz sorba N elemet? -> permutáció
(te minden esetben az ismétlés nélkülire gondolsz, mert egy változó tartalma ismeretlen most)
A válasz mindig N! lesz, a mátrixnál ez szélesség*magasság, tömbnél az elemek száma, de mindig ez..
Gyáááá, ezért utáltam én mindig az ilyen kombinatorikát!
Tömbös bejárás: keverd össze a tömböt és menj végig rajta.
Ha a tömb sorrendje fontos, akkor a tömb indexeit másold egy segédtömbbe, azt keverd össze és azon végigmenve vedd az egyes indexeket.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!