一、首先考虑一下基本情况:
查克拉 | 分身 |
---|---|
0 | n |
1 | n |
n | 1 |
该三种情况下始终只有一种情况,即K=1。
二、 当查克拉能量数量小于分身数量时
易知x个查克拉能量,最多给x个分身分配能量,多余的分身都只能为0查克拉能量。
所以多出来的分身无论有多少都不会影响分配情况K的大小。即当查克拉能量小于分身数量时,K的大小始终和查克拉等于分身数量时的K的大小。
三、建立一个二维数组dp[11][11]
dp[ x ][ y ]代表在 x 个查克拉能量和 y 个分身时的分配情况K的数目。
此时结合上面讲的第二点,可得该代码
if(x<y)
{
dp[x][y]=dp[x][x];
}
四、当查克拉能量大于分身数量时(x个查克拉能量,y个分身)
该情况我们可以分为两种情况来看
1、有一个分身始终为0不分配能量
2、全部分身必须有能量
这两种情况加起来就是全部情况。
先看第一种情况,因为有一个分身不分配,所以该情况就可以转换为x个查克拉能量,y-1个分身时分配方式数量。再结合数组,此时的K就是dp[ x ][ y-1 ];
再看第二种情况,因为该情况下的分身必须都有能量,所以有y个查克拉能量固定分配,一个分身一个,我们不能动。此时我们的能量就剩下了x-y个查克拉能量,所以该情况就可