以下の内容はhttps://white-azalea.hatenablog.jp/entry/2018/12/22/013422より取得しました。


プログラマ脳を鍛える数学パズル 09

釣り合わない男女という問題。
問題は書籍を見るんだー説明が長文になるのでめんどい

boy, girl = (20 + 1, 10 + 1)

map = [[0 for f in range(girl)] for m in range(boy)]
map[0][0] = 1

for f in range(girl):
    for m in range(boy):
        left = 0
        bottom = 0

        if m > 0:
            left = map[m - 1][f]
        if f > 0:
            bottom = map[m][f - 1]

        # 先頭グループが釣り合うケースはカウントしない
        # もしくは、後半グループが釣り合うケースでもカウントしない
        if m == f or (boy - m == girl - f):
            left = 0
            bottom = 0

        map[m][f] = map[m][f] + left + bottom

# どういうマップになっているのかの確認用
#for line in map:
#    print([format(v, "6d") for v in line])

print(map[19][10])

多分これはマップの特定座標まで何通りの行き方があるのか計算する為の考え方と、問題文をそれに当てはめるという2つの要素が問題の趣旨だと思われる。
全力で無視するなら順列作ってさっさと判定してしまえばいい(多分見た目はもっともシンプルになる。速度にさえ目を瞑れば…)。




以上の内容はhttps://white-azalea.hatenablog.jp/entry/2018/12/22/013422より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14