//bkt recursiv
//1 permutari n=3 => 6 combinatii
#include <iostream>
using namespace std;
int n ,st[100];
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==n;
}
void afisare()
{
int i;
for(i=1;i<=n;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=5;
BKT(1);
return 0;
}
Ci8vYmt0IHJlY3Vyc2l2Ci8vMSBwZXJtdXRhcmkgbj0zID0+IDYgY29tYmluYXRpaQojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4gLHN0WzEwMF07CgppbnQgYnVuKGludCBwYXMpCnsKICAgIGludCBpOwogICAgZm9yIChpPTE7aTxwYXM7aSsrKQogICAgICAgIGlmIChzdFtwYXNdPT1zdFtpXSlyZXR1cm4gMDsKICAgIHJldHVybiAxOwp9CgppbnQgc29sKGludCBwYXMpCnsKICAgIHJldHVybiBwYXM9PW47Cn0KCnZvaWQgYWZpc2FyZSgpCnsKICAgIGludCBpOwogICAgZm9yKGk9MTtpPD1uO2krKykKICAgICAgICBjb3V0PDwgc3RbaV07CiAgICBjb3V0IDw8IGVuZGw7Cn0KCnZvaWQgQktUKGludCBwYXMpCnsKICAgIGludCBpOwogICAgZm9yIChpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgc3RbcGFzXT1pOwogICAgICAgIGlmIChidW4ocGFzKSkKICAgICAgICAgICAgaWYgKHNvbChwYXMpKWFmaXNhcmUoKTsKICAgICAgICBlbHNlIEJLVChwYXMrMSk7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgbj01OwogICAgQktUKDEpOwogICAgcmV0dXJuIDA7Cn0K