-1

所以,我正在做在线挑战,这就是我必须做的:我必须输出“N”个魔法。之后你输入“N”个法术来形成魔法。

所以基本上,一个示例输入是:

5
3
2
1
1
0

这个的输出应该是 2,因为 3+2=5 对于魔法。但是,重要的注意事项(我遇到的问题是每个咒语都有 +1 的值)

例子:

12
5
5
4
4
4
3
3
3
2
2
2
1

因此, 5+5=10 ,但由于每个法术都有 +1 值,所以 6+6=12。所以输出应该是2。

这是我的代码,但由于某种原因它输出 3。

#include <iostream>
using namespace std;
int main()
{

    int n,c=0,br=0;
    cin>>n;
    int a[150];

    for(int i=0;i<n;i++)
    {
        cin >> a[i];
        a[i]+=1;
        while(c<=n)
        {
            c+=a[i];
            br++;
        }
    }


    if(a[0]==n-1)
    br--;

    cout << br << endl;
    return 0;
}
4

1 回答 1

1

使用心灵调试技巧:

while(c<=n)

表示法术的总和小于或等于法术的数量。

这意味着,它使用前 5 个咒语(总共 6 个),然后是后 5 个咒语(总共 12 个),然后由于仍然小于或等于咒语的数量(12),所以它使用前四个咒语(现在共有 16 个)。我想你想要c<n那里而不是c<=n.

不相关:您的问题措辞非常糟糕,几乎没有任何意义。

于 2013-02-25T20:47:47.083 回答