Hola! Eh, la verdad es que no tengo ni puta idea de pascal (o mas bien poca), pero tengo el problema resuelto en pseudocodigo, lo cual no te sera muy dificil de pasar a Pascal, C o cualquier otro lenguaje.
proc OchoReinas (y:entero, var t:tabla(1...8,1...8):entero)
var i:entero fin var
inicio
si y <= 8 entonces
para i (1...8)
si t(i,y)=0 entonces
t(i,y) = y+10
marcar(i,y,t)
OchoReinas(y+1,t)
desmarcar(i,y,t)
fin si
fin para
sino
"Solucion encontrada"
fin si
fin inicio
proc desmarcar(x:entero,y:entero,var t:tabla(1...8,1...8):entero)
var i:entero, j:entero fin var
inicio
para i (1...8)
para j (1...8)
si t(i,j) = y entonces
t(i,j) = 0
fin si
fin para
fin para
t(x,y) = 0
fin inicio
proc marcar(x:entero,y:entero,var t:tabla(1...8,1...8):entero)
var i:entero fin var
inicio
para i (1...8)
si t(i,y) = 0 entonces
t(i,y)=y
fin si
si t(x,i) = 0 entonces
t(x,i) = y
si t(x-i,y+i)=0 entonces
t(x-i,y-i)=y
fin si
fin si
si (x-i >= 1) ^ (y+1 <= 8) entonces
si t(x-i,y+i)=0 entonces
t(x-i,y+i)=y
fin si
fin si
si (x+i <= 8) ^ ((y-i) >= 1) entonces
si t(x+i,y-i)=0 entonces
t(x+i,y-i)=y
fin si
fin si
si (x+i <= 8) ^ (y+i <= 8) entonces
si t(x+i,y+i)= 0 entonces
t(x+i,y+i) = y
fin si
fin si
fin para
fin inicio
Espero que este codigo te sirva, si no te funciona bien, dimelo y te lo revisare (el var delante de las variables significa que estan pasadas por referencia).
Saludos