Răspuns :

Răspuns:

#include<iostream>

using namespace std;

int x[3];

bool valid(int k)

{

int i;

for(i=1;i<=k-1;i++)

{

if(x[k]==x[i])

return false;

if(x[2]!=2 && x[2]!=4)

return false;

}

return true;

}

void tipar()

{

for(int i=1;i<=3;i++)

cout<<x[i];

cout<<endl;

}

void backtr(int k)

{

int i;

for(i=1;i<=6;i++)

{

x[k]=i;

if(valid(k))

if(k==3)

tipar();

else

backtr(k+1);

}

}

int main()

{

backtr(1);

return 0;

}

Explicație:

Este un algoritm backtracking foarte asemanator cu cel al aranjamentelor de n luate cate k(in cazul tau de 6 luate cate 3), cu conditia suplimentara ca numarul din mijloc sa fie 2 sau 4.