|
!一筆書き
PUBLIC NUMERIC C !場合の数
LET C=0
! 1 ─ 2 ─ 3
! / \ / \ /
!4 ─ 5 ─ 6
DATA 9,6 !辺(経路)、点(交差点)の個数
! 1 2 3 4 5 6
DATA 0,1,0,1,1,0 !1
DATA 1,0,1,0,1,1 !2
DATA 0,1,0,0,0,1 !3
DATA 1,0,0,0,1,0 !4
DATA 1,1,0,1,0,1 !5
DATA 0,1,1,0,1,0 !6
READ K,N
DIM V(0 TO K) !経路
DIM M(N,N) !隣接行列(無向グラフ)
MAT READ M
FOR J=1 TO N !始点
CALL visit(0,J,V, K,N,M)
NEXT J
IF C=0 THEN PRINT "解なし"
END
EXTERNAL SUB visit(P,R,V(), K,N,M(,)) !経路をたどる
LET V(P)=R
IF P=K THEN !結果を表示する
LET C=C+1
PRINT "No.";C
MAT PRINT V;
ELSE
FOR J=1 TO N !進行可能な交差点を選ぶ
IF M(R,J)<>0 THEN
LET M(R,J)=M(R,J)-1 !切り離す
LET M(J,R)=M(J,R)-1
CALL visit(P+1,J,V, K,N,M) !次の交差点へ
LET M(R,J)=M(R,J)+1 !戻す
LET M(J,R)=M(J,R)+1
END IF
NEXT J
END IF
END SUB
差し替え
!ケニスバーグの橋
!1
!|| \
!2 ─ 3
!|| /
!4
DATA 7,4 !辺(経路)、点(交差点)の個数
! 1 2 3 4
DATA 0,2,1,0 !1
DATA 2,0,1,2 !2
DATA 1,1,0,1 !3
DATA 0,2,1,0 !4
!ペントミノ F型
!1─2─3
!│ │ │
!4─5─6─7
! │ │ │
! 8─9─10
! │ │
! 11─12
DATA 16,12 !辺(経路)、点(交差点)の個数
! 1 2 3 4 5 6 7 8 9101112
DATA 0,1,0,1,0,0,0,0,0,0,0,0 !1
DATA 1,0,1,0,1,0,0,0,0,0,0,0 !2
DATA 0,1,0,0,0,1,0,0,0,0,0,0 !3
DATA 1,0,0,0,1,0,0,0,0,0,0,0 !4
DATA 0,1,0,1,0,1,0,1,0,0,0,0 !5
DATA 0,0,1,0,1,0,1,0,1,0,0,0 !6
DATA 0,0,0,0,0,1,0,0,0,1,0,0 !7
DATA 0,0,0,0,1,0,0,0,1,0,1,0 !8
DATA 0,0,0,0,0,1,0,1,0,1,0,1 !9
DATA 0,0,0,0,0,0,1,0,1,0,0,0 !10
DATA 0,0,0,0,0,0,0,1,0,0,0,1 !11
DATA 0,0,0,0,0,0,0,0,1,0,1,0 !12
|
|