解题思路:设置一些全局变量便于使用,两个正整数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语言代码)浏览:481 |
不容易系列 (C语言代码)浏览:660 |
不容易系列2 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:703 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:700 |
C语言训练-计算1977!* (C++代码)浏览:848 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1814 |
【蟠桃记】 (C语言代码)浏览:664 |
关于C语言变量位置的问题浏览:272 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1067 |