Programma labirinto
Salve a tutti, sono in seri guai con la programmazione, c'è questo programma che mi fa impazzire.
Un labirinto viene rappresentato mediante una matrice contenente valori 0 e 1: un valore 0 indica un muro mente un valore 1 indica un passaggio. Definiamo un cammino come un insieme di passaggi adiacenti (cioè con un lato in comune). Scrivere una procedura int cammino(**char a, int n) che, data una matrice n*n restituisca 1 se esiste un cammino che collega un passaggio nella colonna 0 ad un passaggio nella colonna n-1, e restituisca zero altrimenti. In altre parole si vuole sapere se esiste un insieme diindici $(x_1,y_1)...(x_k,y_k)$ tali che:
a) per $i=i,...,k$, $a[x_i][y_1]=1$
b)per $i=1,...,k-1$ $|x_i-x_(i+1)|+|y_i-y_(i+1)|=1$;
c)$y_1=0$ e $ y_k=n-1$
Ho provato svariate volte con l'iterazione, ma non approdo a nulla di buono, e con la ricorsione è anche peggio. Se qualche anima buona mi desse qualche piccolo spunto, frammento di codice, idea operativa, gliene sarei veramente grato!
Un labirinto viene rappresentato mediante una matrice contenente valori 0 e 1: un valore 0 indica un muro mente un valore 1 indica un passaggio. Definiamo un cammino come un insieme di passaggi adiacenti (cioè con un lato in comune). Scrivere una procedura int cammino(**char a, int n) che, data una matrice n*n restituisca 1 se esiste un cammino che collega un passaggio nella colonna 0 ad un passaggio nella colonna n-1, e restituisca zero altrimenti. In altre parole si vuole sapere se esiste un insieme diindici $(x_1,y_1)...(x_k,y_k)$ tali che:
a) per $i=i,...,k$, $a[x_i][y_1]=1$
b)per $i=1,...,k-1$ $|x_i-x_(i+1)|+|y_i-y_(i+1)|=1$;
c)$y_1=0$ e $ y_k=n-1$
Ho provato svariate volte con l'iterazione, ma non approdo a nulla di buono, e con la ricorsione è anche peggio. Se qualche anima buona mi desse qualche piccolo spunto, frammento di codice, idea operativa, gliene sarei veramente grato!

Risposte
Mi sono dimenticato di precisare che il linguaggio di programmazione in questione è il C.
Vi annuncio che ho appena fatto il programma, e funziona!
Garazie per il link, Sergio, ma non era esattamente quello che fare, inoltre erano davvero tante (
) pagine e ho preferito provare da me. Evvai!

Garazie per il link, Sergio, ma non era esattamente quello che fare, inoltre erano davvero tante (

