Diving Board: You are building a diving board by placing a bunch of planks of wood end-to-end. There are two types of planks, one of length shorter and one of length longer. You must use exactly K planks of wood. Write a method to generate all possible lengths for the diving board.
l = 长木板长度, s = 短木板长度, d = 短木板块数, k = 总块数, sum = 总长度
可得公式
sum = d * s + (k - d) * l
如果 l = n * s
sum = d * s + (k - d) * n * s
如果存在d1和d2,能够使得sum相等,那就意味着
d1 * s + (k - d1) * n * s = d2 * s + (k - d2) * n * s
(d1 + k * n - d1 * n) * s = (d2 + k * n - d2 * n) * s
d1 - d1 * n = d2 - d2 * n
如果要是上列等式成立,d1必须等于d2
不过要注意的是,如果 l = s,那么得到的结果总是相同的。这样上面的公式就变成了:
sum = d * s + (k - d) * s
= k * s
评论