duminică, 4 noiembrie 2012

Problema


Se citesc n numere. Sa se genereze toate secventele din exact m dintre ele (m<n) astfel incat secventele sa contina numere distincte si doua numere alaturate sa nu aiba aceeasi paritate. Daca nu exista solutii se va afisa un mesaj;

#include<iostream.h>
int v[100],i,t,k,m,n,a[100];
void afisare ()
{t++;
for(i=1; i<=m; i++)
cout<<a[v[i]]<<' ';
cout<<endl;
}
int cont (int k)
{for(i=1; i<=k-1; i++)
if(v[i]==v[k])
return 0;
if(a[v[k]]%2==0&&a[v[k-1]]%2==0&&k>1)
return 0;
if(a[v[k]]%2==1&&a[v[k-1]]%2==1&&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==m)
afisare ();
else
back(1+k);}}
int main ()
{cout<<"n=";
cin>>n;
cout<<"m=";
cin>>m;
for(i=1; i<=n; i++)
cin>>a[i];
back(1);
if(t==0)
cout<<"nu exista";
}

Niciun comentariu:

Trimiteți un comentariu