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.