Documente Academic
Documente Profesional
Documente Cultură
#include <iostream>
int st[100],n,p,x=0;
int valid(int k)
{int i;
for (i=1;i<k;i++)
if(st[k]==st[i] ) return 0;
return 1;
void tipar()
x++; cout<<x<<".";
cout<<st[i]<<" ";
cout<<endl;
void back(int k)
st[k]=i;
if(valid(k))
if(k==p) tipar();
else back(k+1);
}
int main()
cin>>n>>p;
back(1);
Modificati programul astfel sa se citeasca din fisierul combinari.in sis a se tipareasca in fisier.out.
2. Se citesc două numere naturale nenule n și m. Să se determine toate şirurile cu m elemente din
mulţimea {1,2,..,n}, ordonate strict crescător, cu proprietatea că oricare două elemente
consecutive în şir au diferenţa mai mică sau egală cu cu 2.
#include <iostream>
int st[100],n,p,x=0;
int valid(int k)
{int i;
for (i=1;i<k;i++)
return 1;
void tipar()
x++; cout<<x<<".";
cout<<st[i]<<" ";
cout<<endl;
void back(int k)
st[k]=i;
if(valid(k))
if(k==p) tipar();
else back(k+1);
int main()
cin>>n>>p;
back(1);
3. Folosind modelul combinărilor sa se generează numerele naturale cu câte trei cifre distincte
din mulţimea {2,5,6,8}.
#include <iostream>
int st[100],n,p,x=0;
int valid(int k)
{int i;
for (i=1;i<=k-1;i++)
if(st[k]==st[i]) return 0;
return 1;
void tipar()
x++; cout<<x<<".";
if(st[i]==1) cout<<2;
else
if(st[i]==2) cout<<5;
else
if(st[i]==3) cout<<6;
else
if(st[i]==4) cout<<8;
// cout<<st[i]<<" ";
cout<<endl;
void back(int k)
st[k]=i;
if(valid(k))
if(k==p) tipar();
else back(k+1);
}
int main()
//cin>>n>>p;
n=4;p=3;
back(1);
#include <iostream>
int valid(int k)
{int i;
for (i=1;i<=k-1;i++)
if(a[st[k]]==a[st[i]]) return 0;
return 1;
void tipar()
x++; cout<<x<<".";
cout<<a[st[i]];
cout<<endl;
void back(int k)
{
st[k]=i;
if(valid(k))
if(k==p) tipar();
else back(k+1);
int main()
n=9;p=3;
back(1);
Modificati programul astfel incat sa nu fie doua cifre alaturate de aceeasi paritate.
#include<fstream>
#include<cstring>
ifstream f("combinari.in");
int st[100],n,p,x=0;
char a[5][10];
int valid(int k)
{int i;
for (i=1;i<=k-1;i++)
return 1;
void tipar()
x++; cout<<x<<".";
cout<<a[st[i]]<<" ";
cout<<endl;
void back(int k)
st[k]=i;
if(valid(k))
if(k==p) tipar();
else back(k+1);
int main()
f>>n>>p;
for(int i=1;i<=n;i++)
f>>a[i];
back(1);