Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj, potřeboval bych pomoci, nevím si rady jak vygenerovat všechny permutace. Když na vstupu dostanu číslo např. 6 tak vygenerovat všechny permutace čísel 1,2,3,4,5,6. Pokouším se o to už docela dlouho a jediný k čemu jsem se dopracoval je že buď udělám strašně moc for-cyklů a poté ještě víc podmínek a když jsem zkoušel přes rekurzi tak jsem se nedočkal ničeho jiného než zástupu jedniček. Tak věřím že mi tu pomůžete.
Předem děkuji :)
Offline
Zdravím,
hlavička programu (zejména deklarace):
Program AllPermutations;
uses CRT;
const n = 7;
var p: array [1..n] of integer;
flag: array [1..n] of boolean;
i: integer;hlavní procedura:
procedure writePermutations(k: integer);
var i: integer;
begin
if k = 0 then begin
for i := 1 to n do write(p[i], ', ');
writeln;
end
else begin
for i := 1 to n do
if flag[i] then begin
flag[i] := false;
p[k] := i;
writePermutations(k-1);
flag[i] := true;
end;
end;
end;hlavní blok programu:
begin clrscr; for i := 1 to n do flag[i] := true; writePermutations(n); readln; end.
Trošku jsem porušil pravidlo, že bych neměl psát rovnou celé programy, ale nemám chuť na podrobné vysvětlování, proto se omlouvám... k zadavateli: Pokud něčemu nerozumíš, nebo Ti není zcela jasné ptej se.
Offline