获得错误的输出

时间:2014-11-18 18:23:36

标签: c++ algorithm

问题

有N个玩具,它们的权重由数组W = {w 1 ,w 2 ,...,w N }表示

每个玩具花费1个单位,如果购买了重量为w i 的玩具,那么我们可以获得所有其他重量在[w i]内的玩具,wi + 4](包括两者)免费。

实施例

W = {1, 2, 3, 17, 10}

如果第一个玩具重量为1的玩具购买1个单位,那么第二个和第三个玩具将自由 ,因为它们的重量在[1,5]之内。最后两个玩具必须单独购买。

我的代码:

for(int i = 0; i < n - 1; i++) {
    if(a[i + 1] - a[i] <= 4) {
        ans += 1;
    }
}

ans = n - ans;
cout << ans;

我得到了错误的答案。我的方法出了什么问题?

2 个答案:

答案 0 :(得分:0)

[这将是一个评论,但我没有足够的声誉]

很难回答这个问题,因为它并不清楚你期望得到什么输出。但是,看起来您需要对原始数组a进行排序才能使这种方法起作用,但从您给出的示例来看,情况并非如此。

话虽如此,我可能误解了你正在尝试做的事情。

答案 1 :(得分:0)

您举了一个免费获得第二个和第三个玩具的示例,因此您检查了W[bought_toy + 1]W[bought_toy + 2]

但是,在你的代码中你只检查W[bought_toy + 1],所以你永远不会知道你也免费获得第三个玩具。