You are on page 1of 7

pentru divimp (in general, verificare fiecare element :D)

int divimp(int p, int q)

{if(p==q)

return v[p];

else

{int m1, m2;

int m=(p+q)/2;

m1=divimp(p,m);

m2=divimp(m+1,q);

if(conditie)

return ceva(adevarat)

else return altcv(fals)

int main

citesti vector

citesc n + alte valori

activez divimp( o, n-1)

-----------------------------------------------------------------------

PENTRU CAUTARE BINARA <3: (vectorul are elem cresc)

int divimp(int p, int q)

{if(p==q)

if(v[p]==x)

return 1;

else return 0;

else if(p>q)

return 0;

else

{int m=(p+q)/2;

if(x==v[m])
return 1;

else if(x<v[m])(daca vreau descr schimb aici semnul)

return divimp(p,m-1)

else return divimp(m+1,q)

int main()

citesti n;

citesti un vectorr;

citesti o valoare x;

++++ hanoi, quick, mergesort

GREEDY

///rucsac

struct numie

int pret;

int greutate;

};

int main()

int G, n;

numie v[50];

cout<<"G=?=";cin>>G;

cout<<"n=?=";cin>>n;

for(int i=0;i<=n;i++)
{

cout<<"greutate obiect"<<i<<" =?";cin>>v[i].greutate;

cout<<"pret obiect"<<i<<" =?";cin>>v[i].pret;

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(v[i].pret/v[i].greutate<v[j].pret/v[j].greutate)

swap(v[i],v[j]);

int g=0;

int pu=0;

for(int i=0;i<n;i++)

{if(v[i].greutate+g<=G)

g+=v[i].greutate;

pu+=v[i].pret;

cout<<pu;

+benzinarie

Back recursiv

///backtracking recursiv

int valid(int k)

forma generala in caiet !!

}
int solutie(int k)

k==n

void afisare(int k)

{for(int i=1;i<=n;i++)

cout<<x[n];

cout<<endl;

void bkt(int k)

for(int p=0;p<n;p++)

x[k]==p;/// sau v[p]

if(valid(k))

if(solutie(k))

afisare(k);

else

bkt(k+1);

int main()

citesti n;

citesti v...

bkt(1);

Back in plan
///backtracking plan

int a[51][50];

int m,n;

int x,y;

int dc[50]=(-1,0,1,...); ///de coloana

int dr[50]=(-1,-1,-1,....); /// de rand

declarari... int etc;

int bkt(int i, int j)

{a[i][j]==mutare(cand e de numarat) sau 2 sau ce vreau eu;

if((i<0 sau i>n) si (j<0 sau j>n))

afisare();

else

int ii,jj;

for(int k=0;k<depinde in cate directii ma misc; k++ )

ii==i+dr[k];

jj==j+dc[k];

if(a[ii][jj]!=0 && depinde de conditii)

bkt(ii,jj);

a[i][j]==1;

void afisare()

{for(int i=0;i<=m;i++)

for(int j=0;j<=n;j++)

cout<<a[i][j]<<' ';
cout<<endl;

int main()

{ for {citire matrice}

citire n,m;

citire x,y

bkt(x,y);

int a[50][50];

int n;

int nrmutari=0;

int x,y;

int dc[8]=(-2, -1, 1, 2, 2, 1, -1, -2);

int dr[8]=(-1, -2, -2, -1, 1, 2, 2, 1);

void afisare()

for(int k=0;k<n;k++)

for(int p=0;p<n;p++)

cout<<a[k][p]<<' ';

cout<<endl;

void backt(int i, int j)

a[i][j]=++nrmutari;

if(n*n==nrmutari)

{
afisare();

else

{for(int i=0;i<8;i++)

{int ii,jj;

ii=i+dr[i];

jj=j+dc[j];

if(a[ii][jj]==0 && ii>=0 && ii<n && jj>=0 && jj<n)

backt(ii,jj);

a[i][j]=0;

nrmutari=nrmutari-1;

int main()

{cout<<"n= ";cin>>n;

cout<<"x= "<<"y= ";cin>>x>>y;

for(int i=0;i<n;i++)

for(int j=i+1;j<n;j++)

cout<<"a["<<i<<"]["<<j<<"]= ";

cin>>a[i][j];

You might also like