Sunteți pe pagina 1din 8

Metoda

Divide et Impera
Slideshow realizat de Pădurariu Teofil
GENERALITĂȚI
• Divide et impera („dezbină și stăpânește”) este un principiu al
puterii de stat, deseori aplicat de guvernele statelor multietnice,
potrivit căruia cea mai bună metodă de a gestionare a unui
asemenea stat este provocarea dușmăniei interetnice pentru
slăbirea puterii și impunerea voinței.
• Divide et impera (în informatică) este o clasă de algoritmi care
funcționează pe baza tacticii divide et impera.
• Divide et impera se bazează pe principiul descompunerii
problemei în două sau mai multe subprobleme (mai ușoare),
care se rezolvă, iar soluția pentru problema inițială se obține
combinând soluțiile subproblemelor. De multe ori,
subproblemele sunt de același tip și pentru fiecare din ele se
poate aplica aceeași tactică a descompunerii în (alte)
subprobleme, până când (în urma descompunerilor repetate) se
ajunge la probleme care admit rezolvare imediată.
• Nu toate problemele pot fi rezolvate prin utilizarea acestei
tehnici. Se poate afirma că numărul celor rezolvabile prin "divide
et impera" este relativ mic, tocmai datorită cerinței ca problema
să admită o descompunere repetată.
APLICAȚIE
Cerinţa
Se dă un şir cu n elemente, numere naturale. Folosind metoda
Divide et Impera să se verifice dacă în şir există elemente impare.

Exemplu
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n Date de intrare
elemente ale şirului, separate prin spaţii. 5
2 8 6 10 8
Date de ieşire
Programul afișează pe ecran mesajul DA, dacă şirul conţine Date de ieșire
elemente impare, respectiv NU în caz contrar. NU

Restricţii şi precizări
1 ≤ n ≤ 100
elementele şirului vor fi mai mici decât 10000
1 /**/ Pentru început vom
2
3
citi vectorul /**/
int main()
FUNCȚIA int main(){}
4 { Vom începe prin a crea funcția int main(){}.
5 int a[100]; Pașii pe care îi vom urma:
6 int n ;
7 1. Vom declara vectorul de 100 de elemente și variabila n, care
8 cin >> n; reprezintă numărul de elemente citite de la tastatură.
9
10 for(int i = 0; i < n; i++) 2. Vom citi numărul n.
11 cin >> a[i];
12 3. Folosind structura repetitivă for, vom citi elementele
13 return 0; vectorului.
14 }
15
FUNCȚIA
1 int imp(int a[100], int imp(int a[100], int s, int d) {}
2 int s,
Vom implementa o funcție care va returna 0, în cazul în care nu există niciun
3 int d)
element impar, și 1, în caz contrar.
4 {
5 if ( s == d ) În antetul funcției vor exista trei parametrii: vectorul a, și doi parametrii de
return a[s]; tip întreg.
6
Variabila s reține (în urma apelului funcției (min(a, 0, n-1))) indexul primului
7 else
element din vector, iar variabila d va reține indexul ultimului element din
8 { vector.
9 int m = (s+d)/2; În cazul în care s este egal cu d, funcției imp() i se va returna valoarea
10 int m1 = imp(a, s, m); elementului a[s].
11 int m2 = imp(a, m + 1, d); Altfel, vom declara 3 variabile:
12 - m va reține mijlocul vectorului de pe intervalul s – d.
13 if ( m1 % 2 == 1 || - m1 va reapela funcția imp() (totul se va desfașura acum pe intervalul s -
m2 % 2 == 1) m)
14
- m2 va reapela funcția imp() (totul se va desfașura acum pe intervalul m
15 return 1;
+ 1 - d)
16 else În final se va verifica daca m1 sau m2 sunt numere impare. În cazul în care
17 return 0; una dintre condiții este adevărată, funcției curente i se va returna valoarea
18 } 1, altfel, valoarea 0.
19 }
20
1 int main()
2 {
3 int a[100];
4 int n ;
5
6 cin >> n;
7 FUNCȚIA int main(){}
8 for(int i = 0; i < n; i++)
Vom termina completând funcția int main() cu
9 cin >> a[i];
condițiile necesare afișării rezultatului:
10
• În cazul în care rezultatul este 1, înseamnă că există
11 if(imp(a,1,n) == 1)
numere impare, altfel, nu.
12 cout << "DA";
13 else
14 cout << "NU";
15
16 return 0;
17 }
18
Sfârșit(){}

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

  • Title 5
    Title 5
    Document1 pagină
    Title 5
    PadurariuTeofil
    Încă nu există evaluări
  • Title 3
    Title 3
    Document1 pagină
    Title 3
    PadurariuTeofil
    Încă nu există evaluări
  • Se Duce Viata
    Se Duce Viata
    Document1 pagină
    Se Duce Viata
    Mateut Mihaela
    Încă nu există evaluări
  • Title 2
    Title 2
    Document1 pagină
    Title 2
    PadurariuTeofil
    Încă nu există evaluări
  • Title 6
    Title 6
    Document2 pagini
    Title 6
    PadurariuTeofil
    Încă nu există evaluări
  • Title 14
    Title 14
    Document3 pagini
    Title 14
    PadurariuTeofil
    Încă nu există evaluări
  • Title 4
    Title 4
    Document11 pagini
    Title 4
    PadurariuTeofil
    Încă nu există evaluări
  • Griles
    Griles
    Document7 pagini
    Griles
    PadurariuTeofil
    Încă nu există evaluări
  • Marturie
    Marturie
    Document3 pagini
    Marturie
    PadurariuTeofil
    Încă nu există evaluări
  • Calatoria
    Calatoria
    Document1 pagină
    Calatoria
    PadurariuTeofil
    Încă nu există evaluări
  • Marturie
    Marturie
    Document3 pagini
    Marturie
    PadurariuTeofil
    Încă nu există evaluări
  • O Poveste
    O Poveste
    Document1 pagină
    O Poveste
    PadurariuTeofil
    Încă nu există evaluări
  • Titanic Vals Costume
    Titanic Vals Costume
    Document3 pagini
    Titanic Vals Costume
    PadurariuTeofil
    Încă nu există evaluări
  • A Te Deschide Catre Lume
    A Te Deschide Catre Lume
    Document2 pagini
    A Te Deschide Catre Lume
    PadurariuTeofil
    Încă nu există evaluări
  • Test Relatii Metricein Triunghiul Dreptunghi
    Test Relatii Metricein Triunghiul Dreptunghi
    Document2 pagini
    Test Relatii Metricein Triunghiul Dreptunghi
    PadurariuTeofil
    Încă nu există evaluări
  • A Te Deschide Catre Lume
    A Te Deschide Catre Lume
    Document2 pagini
    A Te Deschide Catre Lume
    PadurariuTeofil
    Încă nu există evaluări
  • .....
    .....
    Document2 pagini
    .....
    PadurariuTeofil
    100% (2)
  • Copilarix
    Copilarix
    Document2 pagini
    Copilarix
    PadurariuTeofil
    Încă nu există evaluări
  • 4 Test Pronumele
    4 Test Pronumele
    Document7 pagini
    4 Test Pronumele
    Nicoleta Oprea
    Încă nu există evaluări
  • Program 29 Martie
    Program 29 Martie
    Document1 pagină
    Program 29 Martie
    PadurariuTeofil
    Încă nu există evaluări
  • REZUMAT
    REZUMAT
    Document2 pagini
    REZUMAT
    PadurariuTeofil
    Încă nu există evaluări
  • Regele Lear
    Regele Lear
    Document86 pagini
    Regele Lear
    Mona Dragomirescu
    83% (12)
  • Procente Si Probabilitati VI
    Procente Si Probabilitati VI
    Document1 pagină
    Procente Si Probabilitati VI
    PadurariuTeofil
    Încă nu există evaluări
  • Moara Lui Califar
    Moara Lui Califar
    Document6 pagini
    Moara Lui Califar
    Bubu Ciolpan
    83% (81)
  • 0 Teza 7 Rodica
    0 Teza 7 Rodica
    Document1 pagină
    0 Teza 7 Rodica
    Lari Maria
    Încă nu există evaluări
  • Ghid
    Ghid
    Document2 pagini
    Ghid
    PadurariuTeofil
    Încă nu există evaluări
  • 0 L 2 Geompitagora
    0 L 2 Geompitagora
    Document2 pagini
    0 L 2 Geompitagora
    PadurariuTeofil
    Încă nu există evaluări
  • CVTemplate
    CVTemplate
    Document2 pagini
    CVTemplate
    PadurariuTeofil
    Încă nu există evaluări
  • Ghid
    Ghid
    Document2 pagini
    Ghid
    PadurariuTeofil
    Încă nu există evaluări