duminică, 4 noiembrie 2012
Se cer toate solutiile de asezare in linie a m caini si n pisici astfel incat sa nu existe o pisica intre doi caini.
#include<iostream.h>
int v[100],i,j,k,n,m;
void afisare()
{ int i;
for(i=1;i<=n+m;i++)
if(v[i]==1)
cout<<"C";
else
cout<<"P";
cout<<endl;}
int cont(int k)
{ int s,t;
s=0;
t=0;
for(i=1;i<=k;i++)
if(v[i]==1)
s++;
else
t++;
if(k=n+m)
if(s>n&&t>m)
return 0;
if(k>2&&v[k-2]==1&&v[k-1]==2&&v[k]==1)
return 0;
return 1;}
void back(int k)
{int i;
for(i=1;i<=2;i++)
{v[k]=i;
if(cont(k)==1)
if(k==n+m)
afisare();
else
back(k+1);}}
int main()
{cout<<"n=";
cin>>n;
cout<<"m=";
cin>>m;
back(1);
return 0;}
Fie n persoane. Vecinii se cearta. Sa se aranjeze astfel incat vecinii initiali sa nu se intalneasca
#include<iostream.h>
int v[100],i,j,k,n,t;
char a[100][100];
void afisare()
{ int i;
t=t+1;
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[i]==v[k])
return 0;
if(abs(v[k]-v[k-1])==1)
return 0;
if(k==n && v[k]==v[1])
return 0;
return 1;}
void back(int k)
{int i;
for(i=1;i<=n;i++)
{v[k]=i;
if(cont(k)==1)
if(k==n)
afisare();
else
back(k+1);}}
int main()
{cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
back(1);
return 0;}
Dată o mulțime A de numere pozitive și un număr M, să se determine toate submulțimile lui A cu suma elementelor M
#include<iostream.h>
int v[100],n,k,t,i,m,j,s,M,a[100];
void afisare(int k)
{s=0;
for(i=1;i<=k;i++)
s=s+a[v[i]];
if(s==m)
for(i=1;i<=k;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;
return 1; }
void back(int k)
{int i;
for(i=1;i<=n;i++)
{v[k]=i;
if(cont(k)==1)
{afisare(k);
if(k<n)
back(k+1);}}}
int main()
{cout<<"n=";
cin>>n;
cout<<"m=";
cin>>m;
for(i=1;i<=n;i++)
cin>>a[i];
back(1);
return 0;}
Produs Cartezian
#include<iostream.h>
int v[100],i,j,n,x,k,a[100];
void afisare()
{int i;
for(i=1;i<=n;i++)
cout<<v[i]<<' ';
cout<<endl;}
void back(int k)
{int i;
for(i=1;i<=n;i++)
{v[k]=i;
if(k==n)
afisare();
else
back(k+1);}}
int main()
{cout<<"n=";
cin>>n;
back(1);}
int v[100],i,j,n,x,k,a[100];
void afisare()
{int i;
for(i=1;i<=n;i++)
cout<<v[i]<<' ';
cout<<endl;}
void back(int k)
{int i;
for(i=1;i<=n;i++)
{v[k]=i;
if(k==n)
afisare();
else
back(k+1);}}
int main()
{cout<<"n=";
cin>>n;
back(1);}
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";
}
Să se determine anagramele distincte ale unui cuvânt dat.
#include<iostream.h>
int v[100],i,k,n;
char a[100];
void afisare ()
{for(i=1; i<=n; i++)
cout<<a[v[i]-1]<<' ';
cout<<endl;
}
int cont (int k)
{for(i=1; i<=k-1; i++)
if(v[i]==v[k])
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(1+k);}}
int main ()
{cin>>a;
n=strlen(a);
back(1);
}
Sa se genereze cuvintele de k litere care incep cu o vocala si se termina cu o consoana.
# include <iostream.h>
# include <stdio.h>
# include <string.h>
int v[100],k,i,n;
char a[100],b[100];
void afisare (int k)
{for(i=1; i<=k; i++)
{b[i-1]=a[v[i]-1];
b[k]=0;}
if(strchr("aeiouAEIOU",b[0])!=0&&strchr("gtbcfhjklmnpqrsvwxyzBCDFGHJKLMNPQRSTVWXYZ",b[k-1])!=0)
if(strlen(b)>=2)
cout<<b;
cout<<endl;}
int cont (int k)
{for(i=1; i<=k-1; i++)
if(v[i]==v[k])
return
0;
return 1;}
void back(int k)
{int i;
for(i=1; i<=n; i++)
{v[k]=i;
if(cont(k))
{afisare(k);
if(k<n)
back(k+1);}}}
int main ()
{cin>>a;
n=strlen(a);
back(1);}
Abonați-vă la:
Postări (Atom)