Sunteți pe pagina 1din 5

Tehnici de programare: Metoda trierii Descriere

Fie P o problem, soluia creia se afl printre elementele mulimii S cu un numr finit de elemente.

S= s!, s" , s# , ... , sn$

Soluia se determin prin anali%a fiecrui element si din mulimea S.

Schema de aplicare

STAR T

x s1 x satisface condiia problemei Includem x n soluie n S exist elemente necercetate d x un element necercetat din S
a n u d a n u

STO P

Problem prototip
Se consider numerele naturale din mulimea !, ", #, ..., n$. S se determine toate elementele acestei mulimi, pentru care suma cifrelor este egal cu un numr dat m.

Schema de re%ol&are
Pentru i de la 1 p'n la n: Se calculea% suma cifrelor numrului i. Dac suma cifrelor este egal cu m includem i 'n soluie Particulariti de implementare (enerarea )i cercetarea consecuti& a elementelor mulimii S.

*tili%area funciilor )i procedurilor pentru fiecare din subproblemele:

+erificarea apartenenei elementului cercetat si la soluie Plasarea elementului curent 'n soluie (enerarea urmtorului element al mulimii ,dac e necesarProblem S se scrie un program care determin toate sec&enele binare de lungime n, fiecare din ele conin'nd nu mai puin de k cifre de 1. Intrare: numere naturale n, 1<n<20, )i k, k<n, se citesc de la tastatur. Ieire: fiecare linie a fi)ierului te.t OUT.TXT &a conine c/te o sec&en binar distinct, ce corespunde condiiilor din enunul problemei.

0nali%a problemei
1umrul sec&enelor binare de lungime n este 2n, finit. ,&e%i: 2nformatica, manual pentru clasa 3Prin urmare, pentru problema dat poate fi aplicat metoda trierii.

Modelul matematic
555 55 = 54 ...
n

555 5! = !4 ...
n

55 ... 5!5 = "4


n

... !!! !5 = " n "4 ...


n

Elementele mulimii S pot fi interpretate ca numere {0, 1, 2, ..., 2n-1}, repre entate pe n po iii binare. !entru "enerarea consecuti# a sec#enelor binare se #a utili a formula$

!!! ... !! = " n !4


n

s0 % 0& si % si-1 ' 1&

i%1, ..., 2n-1

"

Separarea subproblemelor
(enerarea sec#enelor binare de lun"ime n cu r, r>k uniti

(enerarea sec#enelor binare de lun"ime n

)eterminarea numrului de uniti n sec#ena curent

!relucrarea soluiei curente

Structuri de date

tablou unidimensional cu n elemente, ce pot primi #aloarea 0 sau 1. !entru problema propus n nu dep*e* #aloarea 20. fi*ier text pentru stocarea soluiei.

Algoritm

2niiali%m &ariabilele n )i k, fi)ierul de ie)ire, tabloul B. a!ul 1. Cercetarea secvenei curente

Se calculea% numrul de uniti ,r- 'n sec&ena curent B

a!ul 2. Prelucrarea soluiei

Dac Dac

r k, sec&ena curent B este 'nscris 'n fi)ierul de ie)ire. r = n se 'nchide fi)ierul de ie)ire, apoi STO
.

a!ul ". verificarea prezenei secvenelor necercetate

a!ul #. Generarea secvenei urmtoare

Dac B[n]=0 atunci B[n] 1 'n ca% contrar:

in
at/t timp c/t B[i]

= 1 repetm B[i] 0; i i1;

pentru indicele curent i

B[i]

$%&'()(TII: ro*ram Triere+ con!t nma,-20+ t.pe !ec/enta01arra.01..nma,1 of 0..1+ /ar b:!ec/enta01+ r2i2n2k:inte*er+ f:te,t+ 3U4&TII: function numara1:inte*er+ /ar !25:inte*er+ be*in !:-0+ for 5:-1 to n do !:-!6b051+ numara1:-!+ end+ )O&%$U))I: procedure !crie+ /ar 5: inte*er+ be*in for 5:-1 to n do 7rite 8f2b0519+ end+

7riteln8f9+

procedure urmator 8/ar ,:!ec/enta019+ /ar 5:inte*er+ be*in 5:-n+ 7:ile ,051-1 do be*in ,051:-0+ 5:-5;1+ end+ end+

,051:-1+

<'O&U' $% &('&U': be*in readln8n2k9+ a!!i*n8f2=OUT.TXT=9+re7rite8f9+ for i:-1 to n do b0i1:-0+ repeat r:- numara1+ 6

if r >- k t:en !crie+ if r < n t:en urmator8b9+ until r-n+ clo!e8f9+ end.

Powered by http://www.referat.ro/ cel mai tare site cu referate

S-ar putea să vă placă și