duminică, 4 noiembrie 2012

Problema 4 (facuta in clasa)

n persoane stau pe scaune numerotate de la 1 la n. Oricare doi vecini se ceartă. Să se afişeze toate posibilităţile de a-i reaşeza pe scaune astfel încât să nu fie 2 foşti vecini alăturaţi.

#include<iostream.h>
int v[100],i,n,k;
char a[100][100];
void afisare()
{
for(i=1;i<=n;i++)
cout<<a[v[i]]<<' ';
cout<<endl;
}
int cont(int k)
{
for(i=1;i<=k-1;i++)
if(v[k]==v[i])
return 0;
if(v[k-1]==1+v[k])
return 0;
if(v[k-1]==v[k]-1)
return 0;
return 1;
}
void back(int k)
{int i;
for(i=1;i<=n;i++)
{v[k]=i;
if(cont(k))
if(k==n)
afisare();
else
back(k+1);}
}
int main()
{cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
back(1);}

Niciun comentariu:

Trimiteți un comentariu