Mam do napisania program rekurencyjny, który ze zbioru n-elementowego 1,2,3...n wypisuje wszystkie zbiory k-elementowe
Średnio wiem jak to zrobić, kod który napisałem generuje np dla n=6,k=4 podzbiory:
1234,1235,1245,1345,2345,2346,2356,2456,3456 i nie mam pomyslu jak wygenerowac resztę, prosiłbym o pomoc
#include <stdio.h>
void wypisz(int a[],int k)
{
int i;
for (i = 0; i < k; i++)
{
printf("%d", a[i]);
}
printf("\n");
}
void podzbiory(int n, int k,int tab[])
{
int i=0,j=0;
while(tab[i]+1<=tab[k-1])i=i+1;
if(tab[i]==n)
{
return;
}
if(tab[i]<n)
{
tab[i]=tab[i]+1;
wypisz(tab,k);
i=i-1;
while(i>=0)
{
tab[i]=tab[i]+1;
wypisz(tab,k);
i=i-1;
podzbiory(n,k,tab);
}
}
}
int main(void)
{
int i,n,k;
printf("Podaj n\n");
scanf("%d", &n);
printf("Podaj k\n");
scanf("%d", &k);
int tab[n];
for(i=0;i<n;i++)tab[i]=i+1;
wypisz(tab,k);
podzbiory(n,k,tab);
}