Programma labirinto

alvinlee881
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! :-D

Risposte
alvinlee881
Mi sono dimenticato di precisare che il linguaggio di programmazione in questione è il C.

alvinlee881
Vi annuncio che ho appena fatto il programma, e funziona! :-D
Garazie per il link, Sergio, ma non era esattamente quello che fare, inoltre erano davvero tante ( :D ) pagine e ho preferito provare da me. Evvai! :-D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.