Pagini recente » Cod sursa (job #638551) | Cod sursa (job #2129267) | Cod sursa (job #955399) | Cod sursa (job #1481565) | Cod sursa (job #2174424)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("combinari.in");
ofstream fout ("combinari.out");
int n, k, st[20], ams, ev, i;
int pune_val (int niv)
{
int ok = 0;
if (niv <=k && st[niv]<n )
{
st[niv]++;
ok = 1;
}
return ok;
}
int validare (int niv)
{
int ok = 1;
for (i=1; i<niv; i++)
{
if (st[i]>=st[niv])
ok = 0;
}
return ok;
}
int solutie (int niv)
{
if (niv == k)
return 1;
return 0;
}
int tiparire ()
{
for (i=1; i<=k; i++)
fout << st[i] << ' ';
fout << '\n';
}
void backtr ()
{
int niv = 1;
while (niv > 0)
{
do
{
ams = pune_val (niv);
if (ams == 1)
ev = validare (niv);
}
while (ams == 1 && ev == 0);
if (ams ==1 && ev == 1)
{
if (solutie (niv) == 1)
tiparire ();
else
{
niv ++;
st[niv] = st[niv-1];
}
}
else
niv--;
}
}
int main()
{
fin >> n >> k;
backtr();
}