题目描述
对于给定的一个长度为 �N 的正整数数列 ��Ai,现要将其分成连续的若干段,并且每段和不超过 �M(可以等于�M),问最少能将其分成多少段使得满足要求。
输入格式
第1行包含两个正整数 �,�N,M,表示了数列 ��Ai 的长度与每段和的最大值,第 22 行包含 �N 个空格隔开的非负整数 ��Ai,如题目所述。
输出格式
一个正整数,输出最少划分的段数。
输入数据 1
5 6
4 2 4 5 1
#include<iostream>
using namespace std;
int main()
{
int n,m,a[100000];
int temp=0,result=1;
int i;
cin>>n>>m;
for(i=1;i<=n;i++) cin>>a[i];
for(i=1;i<=n;i++)
{
if(a[i]+temp>m)
{
result++;
temp=0;
}
temp+=a[i];
}
cout<<result<<endl;
return 0;
}
输出数据 1
3
#include<iostream>
using namespace std;
int main()
{
int n,m,a[100000];
int temp=0,result=1;
int i;
cin>>n>>m;
for(i=1;i<=n;i++) cin>>a[i];
for(i=1;i<=n;i++)
{
if(a[i]+temp>m)
{
result++;
temp=0;
}
temp+=a[i];
}
cout<<result<<endl;
return 0;
}