Pagini recente » Cod sursa (job #673337) | Cod sursa (job #1089992) | Cod sursa (job #682176) | Cod sursa (job #1869449) | Cod sursa (job #1209772)
#include <stdio.h>
#define SET 1
#define NOT_SET 0
int N, K;
int C[32];
void generate(int k)
{
if (k > K)
{
// Afiseaza combinatia curenta
for (int i = 1; i <= K; ++i)
{
printf("%d ", C[i]);
}
printf("\n");
}
else
{
for (int i = C[k-1] + 1; i <= N-(K-k); ++i)
{
C[k] = i;
generate(k+1);
}
}
}
void generate2(int n, int k)
{
if (k == K)
{
// Afiseaza combinatia curenta
for (int i = 1; i <= N; ++i)
{
if (C[i] == SET)
{
printf("%d ", i);
}
}
printf("\n");
}
else
{
C[n] = SET;
generate2(n+1, k+1);
if ((N-n) >= (K-k))
{
C[n] = NOT_SET;
generate2(n+1, k);
}
}
}
int main()
{
freopen("combinari.in", "r", stdin);
freopen("combinari.out", "w", stdout);
scanf("%d %d", &N, &K);
//generate(1);
generate2(1, 0);
return 0;
}