//bkt recursiv
//3 combinatii
// Cerinta: un antrenor de dans are in echipa n = 7 fete si m = 5 baieti in cate moduri poate forma k = 3 perechi pentru a reprezenta scoala la un concurs
// Combinari de 7 luate cate 3 fete
#include <iostream>
using namespace std;
int n ,st[ 100 ] ,k;
int bun( int pas)
{
int i;
return ( st[ pas] > st[ pas- 1 ] ) ;
}
int sol( int pas)
{
return pas== k;
}
void afisare( )
{
int i;
for ( i= 1 ; i<= k; i++ )
cout << st[ i] ;
cout << endl;
}
void BKT( int pas)
{
int i;
for ( i= 1 ; i<= n; i++ )
{
st[ pas] = i;
if ( bun( pas) )
if ( sol( pas) ) afisare( ) ;
else BKT( pas+ 1 ) ;
}
}
int main( )
{
n= 3 ;
k= 2 ;
BKT( 1 ) ;
return 0 ;
}
Ci8vYmt0IHJlY3Vyc2l2Ci8vMyBjb21iaW5hdGlpCi8vIENlcmludGE6IHVuIGFudHJlbm9yIGRlIGRhbnMgYXJlIGluIGVjaGlwYSBuID0gNyBmZXRlIHNpIG0gPSA1IGJhaWV0aSBpbiBjYXRlIG1vZHVyaSBwb2F0ZSBmb3JtYSBrID0gMyBwZXJlY2hpIHBlbnRydSBhIHJlcHJlemVudGEgc2NvYWxhIGxhIHVuIGNvbmN1cnMKLy8gQ29tYmluYXJpIGRlIDcgbHVhdGUgY2F0ZSAzIGZldGUKI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuICxzdFsxMDBdLGs7CgppbnQgYnVuKGludCBwYXMpCnsKICAgIGludCBpOwogICAgcmV0dXJuIChzdFtwYXNdPnN0W3Bhcy0xXSk7Cn0KCmludCBzb2woaW50IHBhcykKewogICAgcmV0dXJuIHBhcz09azsKfQoKdm9pZCBhZmlzYXJlKCkKewogICAgaW50IGk7CiAgICBmb3IoaT0xO2k8PWs7aSsrKQogICAgICAgIGNvdXQ8PCBzdFtpXTsKICAgIGNvdXQgPDwgZW5kbDsKfQoKdm9pZCBCS1QoaW50IHBhcykKewogICAgaW50IGk7CiAgICBmb3IgKGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBzdFtwYXNdPWk7CiAgICAgICAgaWYgKGJ1bihwYXMpKQogICAgICAgICAgICBpZiAoc29sKHBhcykpYWZpc2FyZSgpOwogICAgICAgIGVsc2UgQktUKHBhcysxKTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBuPTM7CiAgICBrPTI7CiAgICBCS1QoMSk7CiAgICByZXR1cm4gMDsKfQo=