问题1:if(g>=s)条件判断错误;
因为题目要求,小于等于M都是允许的分段;
不允许范围应该用>s
问题2:if条件成立时,直接将g设为0,会导致当前d[i]这一项不被划分;
可以理解为,将d[i]加入g,求和,发现超出,所以截至i-1项,为1段,d[i]应该算入下一段中;设为0会导致d[i]未计入;
问题3:数组长度不足,测试数据长度达到100000,数组定义空间不足;
by BombBANANAAAA @ 2024-03-17 16:54:39
@[BombBANANAAAA](/user/369395) 谢谢!已关注。
改后代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,s,d[100001],f=1,g=0;
cin>>a>>s;
for(int i=1;i<=a;i++)
{
cin>>d[i];
}
for(int i=1;i<=a;i++)
{
g+=d[i];
if(g>s)
{
f++;
g=d[i];
}
}
cout<<f;
return 0;
}
```
by wangtanhao2013 @ 2024-03-18 21:54:28
此贴结。
by wangtanhao2013 @ 2024-03-18 21:55:27