//bkt recursiv
//2 aranjamente
#include <iostream>
using namespace std;
int n ,st[100],k;
int bun(int pas)
{
int i;
for (i=1;i<pas;i++)
if (st[pas]==st[i])return 0;
return 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;
}
Ci8vYmt0IHJlY3Vyc2l2Ci8vMiBhcmFuamFtZW50ZQojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4gLHN0WzEwMF0sazsKCmludCBidW4oaW50IHBhcykKewogICAgaW50IGk7CiAgICBmb3IgKGk9MTtpPHBhcztpKyspCiAgICAgICAgaWYgKHN0W3Bhc109PXN0W2ldKXJldHVybiAwOwogICAgcmV0dXJuIDE7Cn0KCmludCBzb2woaW50IHBhcykKewogICAgcmV0dXJuIHBhcz09azsKfQoKdm9pZCBhZmlzYXJlKCkKewogICAgaW50IGk7CiAgICBmb3IoaT0xO2k8PWs7aSsrKQogICAgICAgIGNvdXQ8PCBzdFtpXTsKICAgIGNvdXQgPDwgZW5kbDsKfQoKdm9pZCBCS1QoaW50IHBhcykKewogICAgaW50IGk7CiAgICBmb3IgKGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBzdFtwYXNdPWk7CiAgICAgICAgaWYgKGJ1bihwYXMpKQogICAgICAgICAgICBpZiAoc29sKHBhcykpYWZpc2FyZSgpOwogICAgICAgIGVsc2UgQktUKHBhcysxKTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBuPTM7CiAgICBrPTI7CiAgICBCS1QoMSk7CiAgICByZXR1cm4gMDsKfQo=