printЗанятие 3

printГенерация всех сочетаний

Требуется сгенерировать все сочетания из `k` элементов из множества {1, …, `n`}, т.е. все подмножества размера `k`
int n;
int b[100]; // массив флажков
void rec(int i, int k)
{ if(i==n)
  {
    for(i=0; i<n; ++i)
      if(b[i])
        printf(" %d",i+1);
    printf("\n");
    return;
  }
  if(i+k<n)
  {
    b[i]=0;
    rec(i+1);
  }
  if(k>0)
  {
    b[i]=1;
    rec(i+1,k-1);
  }
}
loading