На улазу се задају природни бројеви N и K који означавају број елемената скупа чије комбинације са понављањем тражимо, односно класу тих комбинација. Након задавања тих параметара, корисник уноси елементе скупа. Програм треба да ради за скупове објеката било којег типа.
Алгоритам конструкције комбинација са понављањем произвољног скупа заснива се на генерисању комбинација са понављањем скупа природних бројева од 0 до N-1. Нека је А коначан скуп чије комбинације тражимо(|A|=N). Тада можемо успоставити бијективно пресликавање f:A→{0,…,N-1}. Нека је b1b2…bk произвољна k-комбинација са понављањем скупа {0,…,N-1}. Одговарајућа комбинација са понављањем скупа А је f-1(b1b2…bk).
Нека важи да је N=3 и K=3. Комбинације са понављањем скупа {0,1,2} су:
int sledeca(int *komb, int k, int n){ int i,s; s=k-1; while(s>=0 && !(komb[s]<n-1)) s--; if(s<0) return 0; komb[s]=komb[s]+1; for(i=s;i<k-1;i++) komb[i+1]=komb[i]; return 1; }
This links to this Section