プログラマ脳を鍛える数学パズル 09
プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
- 作者: 増井敏克
- 出版社/メーカー: 翔泳社
- 発売日: 2015/10/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
釣り合わない男女という問題。
問題は書籍を見るんだー説明が長文になるのでめんどい
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つの要素が問題の趣旨だと思われる。
全力で無視するなら順列作ってさっさと判定してしまえばいい(多分見た目はもっともシンプルになる。速度にさえ目を瞑れば…)。