interclasare divide et impera

Sortarea prin interclasare (merge-sort) Utilizand metoda divide et impera, sa se sorteze prin interclasare un sir #include<iostream.h>int a[20],n; void mergesort(int i,int m,int j) {int b[20],x=i,k=1,y=m+1;  while(x<=m && y<=j)      if (a[x]<a[y])            b[k++]=a[x++];      else            b[k++]=a[y++];  while (x<=m)         b[k++]=a[x++];  while (y<=j)        b[k++]=a[y++];  int t=i;         for (k=1;k<=(j-i)+1;k++)         a[t++]=b[k];      }   void divimp(int i,int j) … Read more

constructie vectorul TATA

Se citeste un arbore cu n varfuri dat prin vectorul muchiilor si apoi se citeste varful radacina. Sa se construiasca si sa se afiseze vectorul TATA. Vectorul de tati de declara astfel: T[i]=parintele(tata) nodului i. Pentru arborele din figura vectorul TATA este 0,1,2,1 si radacina este 1.Muchiile care se citesc sunt 1-2,2-1,1-4 #include<iostream.h>int n, r, … Read more

arbori binari vector TATA

Se citeste un arbore cu n varfuri dat prin vectorul TATA. 1) Sa se afiseze muchiile arborelui 2) Sa se construiasca si sa se afiseze matricea de adiacenta a arborelui. Observatie: vectorul TATA  precizeaza pentru fiecare varf i, nodul TATA[i] care reprezinta parintele sau Pentru arborele din imagine vectorul TATA este: 0,1,2,1. #include<iostream.h>int n, t[20], … Read more

cmmdc divide et impera

Sa se calculeze cmmdc pentru n numere utilizand metoda divide et impera #include<iostream.h>int cmmdc(int a[20], int li, int ls){ if(li==ls) return a[li];  else   { int x,y;    x=cmmdc(a,li,(li+ls)/2);    y=cmmdc(a,(li+ls)/2+1,ls);    while(x!=y)       if(x>y) x=x-y;       else y=y-x;    return x;     }    }void main(){int a[20],n,i;cout<<“n=”;cin>>n;for(i=1;i<=n;i++) cin>>a[i];cout<<“cmmdc este: “<<cmmdc(a,1,n);}

suma elementelor unui vector divide et impera

Sa se calculeze folosind metoda divide et impera suma elementelor unui vector #include<iostream.h>int v[20],n;int suma(int li,int ls) {int m, d1 ,d2;  if(li!=ls)                 {m=(li+ls)/2;      d1=suma(li,m);        d2=suma(m+1,ls);       return d1+d2;       }  else      return v[li]; }      void main()  {             cout<<“n=”;  cin>>n;      for(int i=1;i<=n;i++)    {cout<<“v[“<<i<<“]=”;    cin>>v[i];} cout<<“suma celor “<<n<<” elemente ale vectorului “<<suma(1,n);}