解题思路:设置一些全局变量便于使用,两个正整数n,m,表示了数列A[i]的长度与每段和的最大值;利用for循环对数组进行遍历,在遍历的同时产生最后结果
注意事项:在check()函数中,当执行else时,sum的值不是0,而是a[j],因为for循环遍历,下一个便是a[j+1],所以sum应为a[j];
参考代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100005];
int check(){
int num=1,sum=0;
for(int j=0;j<n;j++){
if(sum+a[j]<=m){
sum+=a[j];
}
else{
num++;
sum=a[j];
}
}
cout<<num;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
}
check();
return 0;
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1242 |
三角形 (C++代码)记忆化搜索浏览:1221 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:326 |
Cylinder (C语言描述,蓝桥杯)浏览:1247 |
简单的a+b (C语言代码)浏览:478 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:530 |
简单的a+b (C语言代码)浏览:629 |
数列排序 (C语言代码)浏览:606 |
【计算直线的交点数】 (C语言代码)浏览:917 |