Re: Array Aufgabe lösen, benötige Hilfe
Verfasst: Sonntag 28. November 2021, 13:25
Als kleiner Hinweis, dass man da nicht zwingend Rekursion zu braucht, und das eine relativ einfache Lösung mit den eher primitiven Möglichkeiten eines klassischen BASICs möglich sind:
Sogar inklusive sortieren so schnell durchlaufen, dass sich nicht wirklich gelohnt hat eine Zeitmessung einzubauen. Programmlauf:
Code: Alles auswählen
10 N=5:RL=0:DIM M(N,N),R(N*N)
20 FOR I=1 TO N:FOR J=1 TO N:READ M(I,J):NEXT:NEXT
30 FOR I=1 TO N:FOR J=1 TO N:IF M(I,J) THEN GOSUB 100:NEXT:NEXT
40 IF RL=0 THEN PRINT"NO RIVERS FOUND.":END
50 PRINT RL;"RIVERS FOUND:":GOSUB 300:FOR I=0 TO RL-1:PRINT R(I);:NEXT:END
100 X=I:Y=J
110 GOSUB 200:IF C>1 THEN RETURN
120 M(X,Y)=0:R(RL)=R(RL)+1:IF C=0 THEN RL=RL+1:RETURN
130 X=NX:Y=NY:GOTO 110
200 C=0:NX=-1:NY=-1
210 IF X>0 THEN IF M(X-1,Y) THEN C=C+1:NX=X-1:NY=Y
220 IF X<N THEN IF M(X+1,Y) THEN C=C+1:NX=X+1:NY=Y
230 IF Y>0 THEN IF M(X,Y-1) THEN C=C+1:NX=X:NY=Y-1
240 IF Y<N THEN IF M(X,Y+1) THEN C=C+1:NX=X:NY=Y+1
250 RETURN
300 F=0:FOR I=0 TO RL-2:IF R(I)>R(I+1) THEN T=R(I):R(I)=R(I+1):R(I+1)=T:F=-1
310 NEXT:IF F THEN 300
320 RETURN
20000 DATA 1,0,0,1,0
20010 DATA 1,0,1,0,0
20020 DATA 0,0,1,0,1
20030 DATA 1,0,1,0,1
20040 DATA 1,0,1,1,0Code: Alles auswählen
RUN
5 RIVERS FOUND:
1 2 2 2 5
READY.