public static void main(String[] args) {
int[] divingBoard = divingBoard(1,2,0);
for (int i : divingBoard) {
System.out.println(i);
}
}
//本道题是在递归题里面找到的。但是我找不到递推公式。 所以呢用了一种直接简单明了的方式
//大家很容易懂得一种方法
public static int[] divingBoard(int shorter, int longer, int k) {
int[] dp = new int[k+1];
//如果k==0直接返回空数组
if(k == 0)
{
dp = new int[0];
return dp;
}
//如果两块木板得长度相等得话 那么只有一种长度
if(shorter == longer)
{
dp = new int[1];
dp[0] = shorter*k;
return dp;
}
//如果只让使用一个木板得话,那只有两种长度
if(k == 1)
{
dp[0] = shorter;
dp[1] = longer;
return dp;
}
//如果k>1并且shorter!=longer的时候,题目要求长度从小到大输出。那么前面的元素肯定是用
//最多的短木板的组成的一个长度值。
for(int i = 0;i<=k;i++)
{
dp[i] = shorter*(k-i)+longer*i;
}
return dp;
}