Pagini recente » Cod sursa (job #41364) | Cod sursa (job #728029) | Cod sursa (job #998853) | Cod sursa (job #852130) | Cod sursa (job #1630594)
#include <fstream>
#define NMAX 20
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int i, n, m, level = 1, v[NMAX];
void afisare()
{
for (int i = 1; i <= m; ++ i)
g << v[i] << " ";
g << '\n';
}
bool ok()
{
for (int i = level - 1; i >= 1; -- i)
if (v[i] == v[level])
return 0;
return 1;
}
void backtracking()
{
while (level)
{
bool check = 0;
while (!check && v[level] < n)
{
v[level] ++;
check = ok();
}
if (!check)
level --;
else
if (check && level == m)
afisare();
else
if (check)
v[++ level] = v[level - 1];
}
}
int main()
{
f >> n >> m;
backtracking();
return 0;
}