@[Grace25](/user/359883)
```
int w[11000]; => int w[11000] = {0};
```
或者将w声明为全局变量,自动置零。为什么这样就可以AC,原因您自己揣摩啊,与您的代码密切相关。提示:
```
for(int i=1;i<=m;i++){
w[i]--;
if(w[i] == 0){
w[i]=w[next];
next++;
}
}
```
by metaphysis @ 2020-09-16 20:36:59
@[metaphysis](/user/333388) 保证next=n+m+1时m[i]=0?
by Grace25 @ 2020-09-16 20:47:29
@[Grace25](/user/359883)
像您最开始那样写,w是一个局部变量,编译器可能并未进行初始化,使得数组中的元素值是不确定的,而您的代码中,有可能引用超出下标n的元素,由于该元素的值不确定,就可能导致程序出现错误的结果。
如果您在最开始全部置零,就能消除这种可能,使得结果是正确的。不过像您这样写,是很容易引起Bug的,如果代码超过100行,自己将非常难排查。
by metaphysis @ 2020-09-16 20:55:10