Sunteți pe pagina 1din 4

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.

Divide et Impera

#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; }

Aplicatii care se pot rezolva cu metoda Divide et Impera

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;}

#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