vineri, 14 septembrie 2018

Backtracking - permutari - alocare dinamica

//Permutari prin alocare dinamica
# include <stdio.h>;
# include <conio.h>;
# include <alloc.h>;

# define MAX 100

struct nod{int util; struct nod * next;};
typedef struct nod NOD;
typedef NOD * NOD_PTR;

NOD_PTR vf;
int n,sol[MAX];

void final()
{
int i;
 for(i=0;i<n;i++)
  printf("%d ",sol[i]);
printf("\n");
}
int verif(int j, int k)
{
int i;
for(i=0;i<k;i++)
 if(sol[i]==j) return 0;
return 1;
}

void back(int k)
{
int j;
if(k==n) final();
else
 for(j=1;j<=n;j++)
  if(verif(j,k))
   {
    sol[k]=j;
    vf=s_push(vf,j)
   }
vf=s_pop(vf,val);
}

void main(void)
{
clrscr();

printf("Intr n= ");
 scanf("%d",&n);

back(0);

getche();
}

Niciun comentariu:

Trimiteți un comentariu