题目:
解题思路: 首先输入上第二行要用数组来存,然后再循环一次开始一个标记数和记录数都等于零,然后标记数累计每块蛋糕的重量若标记数大于等于每个朋友的需求量则标记数再次归零记录数加一,特别需要注意的是最后一次如果恰好分完则不需要加否则需要加一
源码:
#include <iostream>
#include <bits/stdc++.h>//万能头文件
using namespace std;
int main()
{
int t,m,n,sum,i;
cin>>n>>m;
int a[1005]={0};
for(i=1;i<=n;i++)
{
cin>>a[i];
}
sum=0;t=0;//这步非常关键初始化
for(i=1;i<=n;i++)
{
sum+=a[i];
if(sum>=m){t++;sum=0;}//必须保证每次分到的蛋糕大于等于每个朋友的需求量,满足条件记录并归零
}
if(sum!=0){t=t+1;}//考虑最后一块是不是恰好分
cout<<t;
return 0;
}
思考题:若本题小朋友的需求量不一样呢,求能分到的最多小朋友与最少小朋友是多少?