Está en la página 1de 1

Bkt

void bkt()
{int k=1,es,ev;
while(k>0)
{do{succesor(k,es);
if(es) validare(k,ev);}
while(es && !ev);
if(es) if(solutie(k))
afisare(k);
else {k++; init (k);}
else k--;}}
/aranjamente/
int st[100],n,p;
void init(int k)
{st[k]=0;}
void validare(int k, int &ev)
{int i; ev=1;
for(i=1;i<k;i++)
if(st[k]==st[i])
ev=0;}
int solutie(int k)
{return k==p;}
void succesor(int k, int &es)
{if(st[k]<n)
{st[k]++; es=1;}
else es=0;}
void afisare(int k)
{int i;
for(i=1;i<=k;i++)
cout<<st[i];
cout<<endl;}
/combinari/
int st[100],n,p;
void init(int k)
{st[k]=st[k-1];}
void validare(int k, int &ev)
{int i; ev=1;
for(i=1;i<k;i++)
if(st[k]==st[i])
ev=1;}
int solutie(int k)
{return k==p;}
void succesor(int k, int &es)
{if(st[k]<n)
{st[k]++; es=1;}
else es=0;}
void afisare(int k)
{ int i;
for(i=1;i<=k;i++)
cout<<st[i];
cout<<endl;}
/dame/
int st[100],n;
void init(int k)
{st[k]=0;}
void validare(int k, int &ev)
{int i;ev=1;
for(i=1;i<k;i++)
if(st[k]==st[i]||(k-i)
==abs(st[k]-st[i]))
ev=0;}
int solutie(int k)
{return k==n;}
void succesor(int k, int &es)
{if(st[k]<n)
{st[k]++; es=1;}
else es=0;}
void afisare()
{int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
if(st[j]==i)
cout<<"D";
else cout<<"-";
cout<<endl;}
cout<<endl;}
/moenzi/
int st[100],v[100],n,s,sk;

void citire ()
{f>>s;f>>n;
for(int i=1;i<=n;i++)
f>>v[i];}
void afisare(int st[50],int n)
{for(int i=1;i<=n;i++)
g<<st[i]<<" ";g<<endl;}
void init(int k)
{ st[k]=-1;}
void validare(int k, int &ev)
{int i;ev=1;sk=0;
for(int i=1;i<=k;i++)
sk=sk+st[i]*v[i];
if(k==n) ev=s==sk;
else ev=sk<=s;}
int solutie(int k)
{return s==sk;}
void succesor(int k, int &es)
{if(st[k]<s/v[k])
{st[k]++;es=1;}else es=0;}
int main()
{citire(); afisare(v,n); bkt();}
/paranteze/
int st[100],n,ni;
void init(int k)
{st[k]=-1;}
void validare(int k, int &ev)
{int i;ni=0;
for(i=1;i<=k;i++)
ni=ni+st[i];
ev=ni>=k-n/2&&ni<=k/2;}
int solutie(int k)
{return ni==n/2;}
void succesor(int k, int &es)
{if(st[k]<1)
{st[k]++;es=1;}else es=0;}
void afisare()
{ int i;
for(i=1;i<=n;i++)
if(st[i]==1) g<<")";
else g<<"(";
g<<endl;}
/partitiile unui nr/
int st[100],n,sk;
void afisare(int sk[100], int n)
{int i; for(i=1;i<=n;i++)
g<<st[i]<<" "; g<<endl;}
void init(int k)
{ st[k]=0;}
void validare(int k, int &ev)
{int i; ev=1; sk=0;
for(int i=1;i<=k;i++)
sk=sk+st[i];
sk<=n;}
int solutie(int k)
{return n==sk;}
void succesor(int k, int &es)
{if(st[k]<n-k+1)
{st[k]++;es=1;}
else es=0;}

/permutari/
int st[100],n;
void init(int k)
{st[k]=0;}
void validare(int k, int &ev)
{int i; ev=1;

for(i=1;i<k;i++)
if(st[k]==st[i]) ev=0; }
int solutie(int k)
{return k==n;}
void succesor(int k, int &es)
{if(st[k]<n){st[k]++;
es=1;} else es=0;}
void afisare() {int i;
for(i=1;i<=n;i++)
cout<<st[i]; cout<<endl;}