Backtracking cifre distincte pare alaturate

Folosind metoda backtracking, sa se afiseze toate nr din n cifre distincte a.i. sa nu fie 2 cifre pare alaturate


#include<iostream.h>
#include<conio.h>
#include<math.h>
int st[20],n,k,p;

int valid(int p)
{if(p==1 && st[p]==0) return 0;
for(int i=1;i<p;i++)
if(st[i]==st[p]) return 0;
if(p>1 && st[p]%2==0 && st[p-1]%2==0) return 0;
return 1;}

int sol(int p)
{return (p==n);}

void tipar(int p)
{for(int i=1;i<=p;i++) cout<<st[i];
cout<<endl;
}

void bkt(int p)
{
int val;
for(val=0;val<=9;val++)
{
st[p]=val;
if(valid(p)) if(sol(p))
tipar(p);
else bkt(p+1);
}
}

void main()
{cout<<"n=";cin>>n;
bkt(1);
getch();
}

{joscommentenable}