30人31脚

 投稿者:山中和義  投稿日:2015年 4月 5日(日)20時13分49秒
  問題
「2人3脚」ならぬ「30人31脚」を考えます。
女の子が続いて並ぶと体力的に不利なので、女の子は隣り合わないようにします。
(男の子は何人並んでもよいものとします)
30人を一列に並べるとき、その並び方が何通りあるかを求めてください。
(男女の並び方だけを考えるものとして、誰がどの位置ということは考えないものとします。

説明
例えば、4人(4人5脚)の場合は以下の8通りがあります。
 男男男男
 男男男女
 男男女男
 男女男男
 女男男男
 男女男女
 女男男女
 女男女男
(終わり)



類題 大相撲本場所
15日間連敗しない勝ち負けの起こり方は何通りあるでしょうか。ただし、連敗とは2連敗をさします。


答え
・場合の数

考察
左側から並べていき、k人の並びを考える。最初の1人を特定すれば、
 男と(k-1)人の並び
 女と男と(k-2)人の並び
と考えられる。
これより、漸化式F(n)=F(n-1)+F(n-2)を得る。
(終わり)


DECLARE EXTERNAL FUNCTION CALC.F
LET N=30
PRINT F(N);"通り"
END

MODULE CALC !F(n)=F(n-1)+F(n-2)、F(0)=1、F(1)=2
SHARE NUMERIC D(0 TO 50)
MAT D=ZER

PUBLIC FUNCTION F
EXTERNAL FUNCTION F(N)
   IF D(N)>0 THEN !計算済みなら
      LET T=D(N)
   ELSE
      IF N=0 THEN
         LET T=1 !φの1通り
      ELSEIF N=1 THEN
         LET T=2 !0,1の2通り
      ELSE
         LET T=F(N-1)+F(N-2) !0**,10*
      END IF
   END IF
   LET F=T
   LET D(N)=T
END FUNCTION
END MODULE



考察
4人5脚を考える。
女が0人、男が4人の場合
 男男男男 の1通り
女が1人、男が3人の場合
 ○男○男○男○ と並べて、女は4個の○から1つを選ぶ。 C(4,1)=4通り
女が2人、男が3人の場合
 ○男○男○ と並べて、女は3個の○から2つを選ぶ。 C(3,2)=3通り
女が3人以上は題意を満たさない。
以上より、1+4+3=8通り
(終わり)


LET N=30
LET S=1 !女が0人
FOR K=1 TO (N+1)/2 !女がk人
   LET S=S+COMB(N-K+1,K) !男を(n-k)人並べて、その間に並べる
NEXT K
PRINT S;"通り"
END




・並びの列挙


LET N=30
PUBLIC NUMERIC C !場合の数
LET C=0
DIM A(0 TO N) !※0番目は番兵
MAT A=ZER
CALL try(1,N,A)
PRINT C;"通り"
END

EXTERNAL SUB try(P,N,A()) !シミュレーション
IF P>N THEN
   LET C=C+1
   !!PRINT "No.";C !並びを表示する
   !!MAT PRINT A;
ELSE
   LET A(P)=0 !男
   CALL try(P+1,N,A)
   IF A(P-1)=0 THEN !1つ前が男なら
      LET A(P)=1 !女
      CALL try(P+1,N,A)
   END IF
END IF
END SUB


 

戻る