Documente Academic
Documente Profesional
Documente Cultură
Probleme :
Problema damelor :
#include<iostream.h>
#include<math.h>
int st[100],n,k;
void init()
{
st[k]=0;
}
int am_succesor()
{
if(st[k]<n){st[k]++;
return 1;
}
else return 0;
}
int e_valid()
{
for(i=1;i<k;i++)if(st[k]==st[i] || abs(st[k]-st[i])==abs(k-i))return 0;
return 1;
}
int solutie()
{
return k==n;
}
void tipar()
{
for(i=1;i<=n;i++)cout<<st[i];
cout<<endl;
}
void back()
{
int as;k=1;
init();
while(k>0)
{
do{}while((as=am_succesor()) && !e_valid());
if(as)if(solutie())tipar();
else {k++;init();}
else k--;
}
}
int main()
{
cout<<"n=";cin>>n;
back();
}
Generarea combinarilor :
#include<iostream.h>
int st[10],n,k;
void init()
{
if(k>1)st[k]==st[k-1];
else st[k]=0
}
int am_succesor()
{
if(st[k]<n-p+k){st[k]++;
return 1;
}
else return 0;
}
int e_valid()
{
return 1;
}
int solutie()
{
return k==p }
void tipar()
{
for(i=1;i<=p;i++)cout<<st[i];
cout<<endl;
}
void back()
{
int as;
k=1;
init();
while(k>0)
{
do{}while((as=am_succesor()) && !e_valid());
if(as)if(solutie())tipar();
else { k++;init(); }
else k--;
}
}
int main()
{
cout<<"n=";cin>>n;
cout<<"p=";cin>>p;
back();
}
Colorarea hartilor :
#include<iostream.h>
int st[10],a[20][20],n,k,i;
void init()
{
st[k]=0
}
int am_succesor()
{
if(st[k]<4){st[k]++;
return 1;
}
else return 0;
}
int e_valid()
{
for(i=1;i<=k-1;i++)
if(st[i]==st[k] && a[i][k]==1)return 0;
return 1;
}
int solutie()
{
return k==n }
void tipar()
{
cout<<"Varianta"<<endl;
for(i=1;i<=n;i++)cout<<"Tara "<<i<< " are culoarea "<<st[i]<<endl;
cout<<endl;
}
void back()
{
int as;
k=1;
init();
while(k>0)
{
do{}while((as=am_succesor()) && !e_valid());
if(as)if(solutie())tipar();
else { k++;init(); }
else k--;
}
}
int main()
{
cout<<"Numarul de tari :";cin>>n;
for(i=1;i<=n;i++)
for(j=1lj<=i-1;j++)
{
cout<<a["<<i<<','<<j<<"]=";cin>>a[i][j];
a[j][i]=a[i][j];
}
back();
}