こんばんは。
N回コインを投げるとしてコインの表、裏の総数を求めるプログラムを書くのにはどうしたら宜しいでしょうか?
もちろん2^Nである事は分かります。
ただ、例えばコインの表裏によって今日食事をする、しないを決めるとします。
日によって食事量が違うとして、その食事の量に比例して体重が増えるとします。
ある一定の体重を超えると死んでしまうので、体重を超えないようにするコイントスの組み合わせを求めたい、と言うのがこの質問の趣旨です。
とりあえず、体重を超えた時点でその時点以降の組み合わせは考えなくて良いことになります。
なので、それまでの道順をどこかに転記しておき、そこを避けるようにコイントスをすればいいのではないかと考えました。
ただ、実際にプログラム上でどうやってこれを表現したら良いのかわかりません。
というか、そもそもにして組み合わせの求め方がわかりません。
for文を力技でネストするにしてもNが分からなければプログラムが書けません。
Itertoolなどのライブラリを使わないで、for文などの極基本的なコードのみを使った再帰的関数を書きたいです。
とりあえず上記のオーバーする道は避ける、という事は置いておいて、なるべく簡潔にこのようなプログラムの書き方を教えて頂けると助かります。
よろしくお願い申し上げます。
問題は「N回コインを投げるとしてコインの表、裏の総数を求める」ではないわけですよね。動的計画法で解くナップザック問題の類問?
すみませんが、結局課題がなんなのかわかりづらいので、もう少し問題を定式化していただけますか?
分かりづらくてすみません。
疑問点を一気に列挙した形になっているので文章が纏まっていなかったです。
再帰的関数などを用いて、コイントスの組み合わせを列挙したいです。
再帰関数はなんらかの終了条件が必要です。長さ N と固定しないのであれば、それの代わりなんらかの再帰を終了する条件をつけてください。
ある体重を超えないように食事する、しないを決めるというのはDP の部分和問題が近いように思いますが、どうでしょうか?
https://qiita.com/drken/items/a5e6fe22863b7992efdb
回答1件
あなたの回答
tips
プレビュー