Red de conocimiento informático - Aprendizaje de código fuente - ¡El Sudoku ha entrado en un período de cuello de botella y busca soluciones!

¡El Sudoku ha entrado en un período de cuello de botella y busca soluciones!

Cálculo del programa. Sólo existe una única solución a este problema.

Código adicional:

escriba x9

entero(1):: a

entero(1):: s(9)

entero(1):: np

tipo final

tipo(x9):: kk(9, 9)

datos kka/?

0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, amp;

0, 0, 0, 0, 6 , 0, 8, 0, 5, 0, amperio

8, 0, 7, 0, 3, 0, 6, 0, 0, amperio

0, 0 , 0, 0, 1, 0, 0, 9, 7, 0, amperio

0, 5, 0, 9, 6, 3, 0, 2, 0, amperio;

0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 8, amp;

0, 0, 5, 0, 0, 2, 0, 0, 4, 0, 7, y

0, 8, 0, 0, 3, 0, 0, 9, 0, 0, 0, y

1, 0, 0, 4.0, 0, 0, 0, 0 /

kknp=-kka

hacer i=1, 9

hacer j=1, 9

? kk(j,i)s=0

? si(kk(j,i)np.eq.0) entonces

?) entonces

?do k=1,9

do il=1,9

if(kk(il,i)a.eq.k) salir

fin de do

if(il.le.9) ciclo

do ih= 1, 9

if(kk(j,ih )a.eq.k) salir

fin de hacer

if(ih.le.9) bucle

ni=((i 2)/3- 1)*3 1

nj=((j 2)/3-1)*3 1

hacer ih= ni, ni 2

hacer il =nj, nj 2

?if(kk(il,ih)a.eq.k) salir

end do

if(il.le. nj 2) salir

fin de hacer

if(ih.le.ni 2) ciclo

if(il.if(il. le.nj 2) ciclo

kk(j,i)s(k)=k

? fin de

? kk(j,i)s(1)=kk(j,i)a

?end if

end do

end do

n=1

kka=0

kknp=0

m=0

hacer mientras(.true.)

if(n.gt.81) salir

i=( n 8)/9

j=n-9*(i-1)

kk(j,i)np=kk(j,i)np 1

k=kk(j,i)np

if(k.gt .9) entonces

? if(n.eq.1n=n-1

? ciclo

else

? kk( j,i)

a=0

terminar si

if(kk(j,i)s(k).eq.0) entonces

?ciclo

else

* do ih=1, i

* if(kk(j,ih)a.eq.kk(j,i)s(k)) salir

* end do

* if(ih.le.i) ciclo

?do il=1, j

? (kk(il,i)a.eq.kk(j,i)s(k)) exit

? end do

?

? ni=((i 2)/3-1)*3 1

?nj=((j 2)/3-1)*3 1

? hacer ih=ni, i

? hacer il=nj, nj 2

if(kk(il,ih)a.eq.kk(j,i) s(k)) salir

? fin hacer

? if(il.le.nj 2) salir

?fin hacer

? if(il.le.nj 2) ciclo

? if(ih.le.i) ciclo

? )s(k)

? si(n.eq.81) entonces

?) entonces

?m=m 1

?write(*,'(/,2x,a,i3)') 'find = ',m

?do jj=1,9

write(*,' (1x, 9i2)') kk (1: 9, jj)a

? end do

?else

?n=n 1

?i=(n 8)/9

?j=n-9*(i-1)

?kk(j,i)np=0

?ciclo

? finalizar si

finalizar si

finalizar hacer

finalizar

?