给定车轮总数,组成两轮和四轮车辆的方法数
我在一次采访中被问到这个问题。
我的解决方案很简单:给定轮子,形成车队的方法数量dp[i] = dp[i - 2] + dp[i - 4]在哪里。dp[i]i
但它没有通过测试用例。我做错了什么?
回答
尝试这个。
public static void main(String args[]) throws IOException {
int[] input = {4, 5, 6, 0};
int[] output = IntStream.of(input)
.map(n -> n <= 0 || n % 2 != 0 ? 0 : n / 4 + 1)
.toArray();
System.out.println(Arrays.toString(output));
}
输出:
[2, 0, 2, 0]
- 当
n为奇数时,结果始终为零。 - 当
n是偶数时,您最多可以拥有n / 4四轮车辆。每辆都可以兑换两辆两轮车,所以箱数是总的数量{n / 4, ... , 2, 1, 0}。那就是n / 4 + 1。但是需要注意的是,当 时n <= 0,它变成0。
- 两轮车的数量是通过确定某个'n'的四轮车的数量来唯一确定的。所以算一下你能拥有多少辆四轮车就足够了。