5
シャンペーンの噴水パズル
空のグラスは次の順序で並べられます。 液体がいっぱいの場合、1枚目のガラスに液体を注ぐと、余分な液体がガラス2と3に等量で流れます。ガラス2がいっぱいになると、余分な液体が4と5などに流れます。 液体がNリットルで、各ガラスの最大容量が1リットルである場合getWaterInBucket(int N, int X)、Xがガラス数である関数に記入してガラスに注ぐことにより液体をNリットル空けた場合、ガラスに存在する液体の量を与えます。たとえば、最初に4リットルが必要で、ガラス3の水を見つけたい場合、関数はgetWaterInBucket(4, 3) プログラムでこれを解決するにはどうすればよいですか?パスカルの三角形を使って数学の解を見つけようとしました。これは機能しませんでした。私はそれをツリーだと考えたので、このようなパラメーターを追加し、getWaterInBucket(BTree root, int N, int X)各レベルで再帰的な解決策を試すことができますが、この問題ではパラメーターは許可されていません。明らかな何か、いくつかのトリックはありますか?