8つのマスがあり、それぞれのマスにAまたはBを書き込む。ただし、Bを縦にも横にも隣り合わせて書くことはできない。このとき、8つのマスすべてにAまたはBを書き込む方法は何通りあるか。Bを1つも書かない場合も含む。
2025/6/14
1. 問題の内容
8つのマスがあり、それぞれのマスにAまたはBを書き込む。ただし、Bを縦にも横にも隣り合わせて書くことはできない。このとき、8つのマスすべてにAまたはBを書き込む方法は何通りあるか。Bを1つも書かない場合も含む。
2. 解き方の手順
この問題は、動的計画法を用いて解くことができる。
まず、各マスに対して、以下の2つの状態を定義する。
* 状態0: そのマスにAを書く
* 状態1: そのマスにBを書く
を、番目のマスまで書き込みが終わっており、最後のマス(番目のマス)の状態がである場合の数とする。
初期条件は、とである。
漸化式は、以下のようになる。
* (i番目にAを書く場合、i-1番目はAでもBでも良い)
* (i番目にBを書く場合、i-1番目はAでなければならない)
ただし、マスが縦横に並んでいるため、Bが縦横に隣り合わないように注意する必要がある。
そこで、各マスの状態を以下の様に定義する。
* 状態0: A
* 状態1: B
各マスに番号を以下のように振る
1 2 3
4 5 6
7 8
をi番目のマスまで埋めた時にi番目のマスの状態がjである場合の数とする。
初期状態
(1番目のマス)
遷移
(常にAを置ける)
は、縦横にBが並ばない場合にのみBを置ける
各マスについて、とを計算していく。
1: A, B ()
2: AA, AB (), BA ()
3: AAA, AAB, BAA (), ABA () (2にBを置いた場合、3にはAしか置けない)
4: AAAA, AAAB, BAAA, ABAA (), AABA, BABA, ABAB ()(1にBを置いた場合、4にはAしか置けない)
5: 7
6: 10
7: 17
8: 27
漸化式で解く場合、以下のようになる
: i番目まで決まっていて、i番目がj (A:0, B:1)であるような場合の数
隣り合うマスの条件を考慮する必要があるため、DPで状態を管理する必要がある。
全マスをAで埋める場合も含むため、Bを1つも書かない場合も考慮する。
丁寧に場合分けして数え上げることも可能だが時間がかかる。
以下のような数え上げを行う。
Bの個数が0個:1通り (AAAAAAAA)
Bの個数が1個:8通り
Bの個数が2個:条件を満たす組み合わせを数える
Bの個数が3個:条件を満たす組み合わせを数える
...
手計算では難しい。
問題文をよく読むと、Bは縦にも横にも並べて書くことができないとある。
これはかなり厳しい制限なので、Bの個数はかなり少なくなる。
8個のマスにA, Bを書き込むことから考えると、総数は通りある。
そこからBが縦横に隣り合うケースを除いていくことは非常に困難。
プログラムを書いて計算することを検討する。
3. 最終的な答え
41