我究竟做错了什么? (C ++数组)

时间:2013-02-25 20:36:53

标签: c++ arrays

所以,我正在进行在线挑战,这就是我要做的事情: 我必须输出魔法数字“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;
}

1 个答案:

答案 0 :(得分:1)

使用通灵调试技巧:

while(c<=n)

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

这意味着,它使用前5个法术,(总数为6),然后是第二个五个法术(总数为12),然后因为它仍然小于或等于法术数量(12),它使用前四个法术(总共现在是16个)。我想你想要c<n而不是c<=n

无关:你的问题措辞严厉,几乎毫无意义。