You are on page 1of 5

Codrescu

Marius

Tehnica BT

Generarea produsului cartezian


#include <iostream>
using namespace std ;
int n,t,k,as,ev,s[100],m[10] ;
void init ()
{
s[k]=0;
}
int succesor ()
{
if (s[k]< m[k])
{
s[k]=s[k]+1;
return 1;
}
else return 0 ;
}
int valid ()
{
return 1;
}
int solutie ()
{
return k==n ;
}
void tipar ()
{
for ( int i=1 ; i<=n ; i++)
cout << s[i] << " " ;
cout << endl ;
}
void bt()

{
k=1 ;
init () ;
while (k>0)
{
as=1;ev=0;
while (as && !ev)
{
as= succesor () ;
if (as) ev= valid () ;
}
if (as)
if (solutie())
{cout<<"solutia "<<t+1<<endl;
tipar() ;
t++;
}
else {k=k+1;
init ();
}
else k=k-1 ;
}
}
int main ()
{int i;
cout<<"n=" ; cin>>n ;
for(i=1;i<=n;i++)
{
cout << "Dati cardinalul multimii" <<i <<endl ;
cin>>m[i] ;}
bt ();
return 0;
}

Tehnica BT

Generarea aranjamentelor si numararea


solutiilor :
#include <iostream>
using namespace std ;
int n,t,m,k,as,ev,s[100];
void init ()
{
s[k]=0;
}
int succesor ()
{
if (s[k]<n)
{
s[k]=s[k]+1;
return 1;
}
else return 0 ;
}
int valid ()
{
for (int i=1;i<k;i++)
if (s[k]==s[i]) return 0 ;
return 1;
}
int solutie ()
{
return k==m ;
}
void tipar ()
{
for ( int i=1 ; i<=m ; i++)
cout << s[i] << " " ;
cout << endl ;
}

void bt()
{
k=1 ;
init () ;
while (k>0)
{
as=1;ev=0;
while (as && !ev)
{
as= succesor () ;
if (as) ev= valid () ;
}
if (as)
if (solutie())
{cout<<"solutia "<<t+1<<endl;
tipar() ;
t++;
}
else {k=k+1;
init ();
}
else k=k-1 ;
}
}
int main ()
{
cout<<"n=" ; cin>>n ;
cout <<"m=" ; cin >> m ;
bt ();
return 0;
}

Tehnica BT

Problema damelor cu numararea solutiilor

void bt()

distincte

#include <iostream>

k=1;

#include <cmath>

init();

using namespace std;

while(k>0)

int n,k,as,ev,s[100],t;

void init()

as=1;ev=0;

while(as&&!ev)

s[k]=0;

as=succesor();

int succesor()

if(as)

ev=valid();

if(s[k]<n)

if(as)

s[k]=s[k]+1;

if(solutie())

return 1;}

{cout<<"solutia numarul"<<t+1<<endl;

else return 0;

tipar();

}
int valid()
{
for(int i=1;i<k;i++)
if(s[k]==s[i] || abs(s[k]-s[i])==k-i)
return 0;
return 1;

t=t+1;
}
else {k=k+1;
init();
}
else k=k-1;
}

int solutie()

int main()

return k==n;

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

bt();

Tehnica BT

void tipar()

return 0;

for(int i=1;i<=n;i++)
cout<<"linia"<<i<<"si coloana"<<s[i]<<endl;}

You might also like