题目链接:点击打开链接
题意:
给定r个红色正方体,g个绿色正方体。
要求搭建一个高度为n的塔。
对于高度为n的塔,第一层积木个数必须为n,第二层必须为n-1,依次类推,每层比下面那层少一个。
且同一层颜色必须相同。
问:
我们设最高能搭建的塔的高度为h,问有多少种方法能搭建出高度为h的塔。
思路:
从最顶层开始构造。
设dp[i][j]表示前i层花了j个红色木块的方法数
因为每层的个数固定,所以知道花费红色的个数,则就能马上算出花费绿色的个数。
而且对于最高的高度,是和颜色无关的,只和r+g有关,YY得证。
或者直接dp上去,当这一次的方案数是0时,则上一次就是最高的高度了。
前i层可以用滚动数组优化掉。
#include
#include
#include
#include
#include
#include