Pagini recente » Cod sursa (job #672281) | Cod sursa (job #1581451) | Cod sursa (job #3246914) | Cod sursa (job #1714575) | Cod sursa (job #497715)
Cod sursa(job #497715)
#include <stdio.h>
using namespace std;
int k,st[19],as,ev,n,i,m;
void init (int k, int st[19])
{
if(k>1) st[k]=st[k-1];
else st[k]=0;
}
void succesor (int k, int st[19], int &as)
{
if(st[k]<n)
{
st[k]=st[k]++;
as=1;
}
else as=0;
}
void valid (int k, int st[19], int &ev)
{
ev=1;
for(i=1;i<k&&ev;i++)
if(st[k]==st[i]) ev=0;
}
int solutie (int k)
{
if(k==m) return 1;
else return 0;
}
void tipar (int k)
{
for(i=1;i<=k;i++) printf("%d ", st[i]);
printf("\n");
}
void back ()
{
k=1;
init (k,st);
while(k)
{
do{
succesor (k,st,as);
if(as) valid (k,st,ev);
}while(as && !ev);
if(as)
if(solutie (k)) tipar (k);
else
{
k++;
init (k,st);
}
else k--;
}
}
int main ()
{
freopen("combinari.in","r",stdin);
freopen("combinari.out","w",stdout);
scanf("%d %d", &n, &m);
back ();
return 0;
}