求助!

P1181 数列分段 Section I

问题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


|