Да се състави програма, чрез която се извеждат възможните комбинации на естествените числа от интервала от 1 до въведено от клавиатурата число N[4..10] и K[2..4] - за брой елементи в K-ти клас.
Пример: N=4, K=2 Изход: 1, 2; 1, 3; 1, 4; 2, 3; 2, 4; 3, 4 Брой комбинации 6
Решение
//Комбинации от N елемента К-ти клас
#include <iostream>
using namespace std;
unsigned do_chis;//maksimanloto chislo w kombinaciqta
unsigned broi_elem;//kolko chisla w kombinaciqta - K-ti klas kombinaciq
unsigned broj_komb;
unsigned mas[10];
void pechat(unsigned dyl)
{ unsigned i;
for (i = 0; i < dyl; i++) {cout<<mas[i]<<" ";}
cout<<endl;
broj_komb++;
}//void
void kombin(unsigned min_elem, unsigned nach_elem)
{ unsigned j;
if (min_elem > broi_elem) return;//izhod
for (j = nach_elem + 1; j <= do_chis; j++) {//poredicata kombinacii
mas[min_elem - 1] = j;//suhranqwa porednata kombinaciq
if (min_elem == broi_elem) pechat(min_elem);// kombinaciq K-ti klas
kombin(min_elem + 1, j);//rekursiwno izwikwane
}//for
}//void
int main()
{
cout<<"Da se systawi programa, koqto izwevda wyzmovnite kombinacii\n";
cout<<"ot estestweni chisla ot interwala ot 1 do wywedeno ot\n";
cout<<"klawiaturata chislo N. Kombinacii ot N elementa K-ti klas.\n";
cout<<"Primer: 4, broj elementi 2 Izhod: 1,2; 1,3; 1,4; 2,3; 2,4; 3,4 broj 6\n";
cout<<"Wywedete chislo ot interwala [4..10]: ";cin>>do_chis;
cout<<"Wywedete broj elementa w kombinaciqta [2..4]: ";cin>>broi_elem;
broj_komb=0;//inicializira broq kombinacii
kombin(1, 0);
cout<<"Broqt izwedeni kombinacii e: "<<broj_komb<<endl;
system("pause");
return 0;
}