Sunteți pe pagina 1din 4

Divide et Impera

Teorie:

Divide et impera se bazeaz pe principiul
descompunerii problemei n dou sau mai multe
subprobleme (mai uoare), care se rezolv, iar soluia
pentru problema iniial se obine combinnd
soluiile subproblemelor. De multe ori,
subproblemele sunt de acelai tip i pentru fiecare
din ele se poate aplica aceeai tactic a
descompunerii n (alte) subprobleme, pn cnd (n
urma descompunerilor repetate) se ajunge la
probleme care admit rezolvare imediat.

Aplicatii care se pot rezolva cu metoda
Divide et Impera
1
#include <iostream>
using namespace std;
int v[10],n;
int max(int i, int j)
{ int a, b, m;
if (i==j) return v[i];
else { m = (i+j)/2;
a = max(i, m);
b = max(m+1, j);
if (a>b) return a; else return b; } }
int main( )
{ cout<<n=;cin>>n;
for (int i=1; i<=n; i++)
{ cout<<v[<<i<<]=; cin>>v[i]; }
cout<<max=<<max(1,n);
return 0; }
2
#include<iostream.h.
#include<conio.h>
int v[1oo]
int main(int v,int j)
{if (i==j return v[j]
else
a=maxim(i,(i+j)/2);
b=maxim(i+j)/2+1,j);
if(a>b)return a;
else
return b;}


3
#include<iostream.h>
#include<conio.h>
char a,b,c;int n;
void han(int n,char a,char b,char c)
{if(n==1) cout<<a<<b<<endl;
else
{
han(n-1,a,b,c);
cout<<a<<b<< ;
han(n-1,c,b,a):}
}

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