Určete počet všech možných korektních uzávorkování výrazu pomocí N párů závorek ().
Napište program, který zjistí a vypíše počet všech možných korektních uzávorkování výrazu pomocí N párů závorek (). Například pro N=3 existuje 5 takových možných uzávorkování:
()()()
(())()
()(())
(()())
((()))
Na standardním vstupu program dostane jedno celé číslo N určující počet párů závorek, výsledek výpočtu (opět jedno celé číslo) program vypíše na standardní výstup.
Offline
Zdravím, pravidla říkají
Vždy se snažte alespoň zběžně naznačit váš vlastní pokus a řešení předložených příkladů.
Jaký je tedy tvůj (Váš?) návrh na řešení této úlohy?
Offline
Program uzavorkovani;
const MAX = 1000;
var n: integer;
vysledek : array[1..MAX] of char;
i : integer;
procedure zavorky(l,p : integer);
begin
if( l > 0 ) then begin
vysledek[ 2*n -p -l +1 ] := '(';
zavorky(l-1,p);
end;
if( (p > 0) and (p > l) ) then begin
vysledek[ 2*n -p -l +1 ] := ')';
zavorky(l,p-1);
end;
if( p = 0 ) then begin
for i:= 1 to 2*n do write(vysledek[i]);
writeln;
end;
Offline
↑ Ainamella: Nechce sa mi skúmať čo za kód ste to tu dali ale k tým zátvorkám by vám možno mohlo pomôcť naštudovať si čo sú to Catalanove čísla. http://en.wikipedia.org/wiki/Catalan_number Potom by sa v tom mala dať nájsť pekná rekurencia.
Offline