Вписване в сайта



комбинаторика

Четвъртък, 29 Декември 2011 07:17

комбинация - брой елементи K-ти клас

Написана от 
Оценете
(3 гласа)

Да се състави програма, чрез която се извеждат възможните комбинации на естествените числа от интервала от 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;
}
Прочетена 2778 пъти Последно променена в Четвъртък, 29 Декември 2011 09:10