一筆書き

 投稿者:山中和義  投稿日:2015年 5月10日(日)14時04分32秒
 
!一筆書き

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




 

戻る