Cod sursa(job #1618781)
Utilizator | Data | 27 februarie 2016 23:53:45 | |
---|---|---|---|
Problema | Combinari | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.9 kb |
#include<fstream>
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int st[19],n,l;
int valid(int k)
{
if(k==1)
return 1;
for(int i=1;i<k;i++)
if(st[i]==st[k])
return 0;
return 1;
}
void backtracking(int n,int l)
{
int k=1,q;
st[k]=0;
while(k>0)
{
q=0;
while(!q && st[k]<n)
{
st[k]++;
if(valid(k))
q=1;
}
if(!q)
k=k-1;
else
{
if(k==l)
{
for(int i=1;i<=k;i++)
g<<st[i]<<" ";
g<<"\n";
}
else
{
k++;
st[k]=st[k-1];
}
}
}
}
int main()
{
f>>n>>l;
backtracking(n,l);
}