这是我的代码有什么错么?

描述

小星一个非常重要的任务,统计数据,说出一串数字,然后小星帮忙加起来,因为数据很多,会很容易看错,意识到当读到一个错误的数字时,他说 0,意思是“忽略当前的最后一个数字”。不幸的是,小星可能会反复犯错误,并对每个错误说 0。

说出来的 0 有可能也是多余的,即所有数字都错误了,但是还是在说 0,这样的 0 需要小星忽略掉,如果所有数字都错误,则总和为零。

输入描述

第一行,输入一个 n(1<=n<=100000) 表示所说的数字个数
第二行,输入 n 个数,表示说出的数字 a
i

(1<=a
i

<=10
9
)

输出描述

输出一行,表示说出正确数字之和

用例输入

10
1 3 5 4 0 0 7 0 0 6
用例输出 1

7
用例输入

4
1 0 0 0
用例输出

0


#include 
#include 
 
using namespace std;
 
int main() {
    int n,x,y,a;
    cin>>n;
    for(int i=1; i>a;
        if(a!=0){
            y=y+a;
            x=a;
        }
        else{
            y=y-x;
        }
    }
    if(y<0){
        cout<<"0";
    }
    else{
        cout<x=5
y=4
a=0

你不能只保存最后一个数,这样遇到连续0时会出错。比如“1 1 2 0 0”,第1个0减去2,第2个0需要减去1,于是需要同时保存1和2。所以这道题必须用数组。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^