题目:

代码:
#include<stdio.h>
int main()
{
int n,k;
scanf("%d %d",&n,&k);
int weight[1500];
int ori_sum=0;
for(int i=0;i<n;i++)
{
scanf("%d",&weight[i]);
ori_sum+=weight[i];
}
int friend_num=0;
int cake_wei=0;
int sum=0;
for(int i=0;i<n;i++)
{
cake_wei+=weight[i];
if(cake_wei<k)
{
continue;
}
while(cake_wei>=k)
{
friend_num+=1;
sum+=cake_wei;
cake_wei=0;
}
}
if(sum!=ori_sum)
{
friend_num+=1;
}
printf("%d",friend_num);
return 0;
}
本题要注意最后可能有蛋糕是不满足>k的,但是这个朋友仍然算是分到了蛋糕。所以使用已经满足>k的蛋糕总和与总的蛋糕之和进行比较,就知道是否刚好分完,如果没有刚好分完,则需要在分到蛋糕的朋友人数上+1.
这段代码是用C++实现的一个程序,用于解决将蛋糕按照大于特定重量k的要求分配给朋友的问题。程序读取蛋糕重量,计算可以完整分配给朋友的蛋糕数量,并考虑最后一个可能不足k的蛋糕。如果所有蛋糕的总和不能被完整分配,则朋友人数加一。程序最后输出分配蛋糕的朋友总数。
&spm=1001.2101.3001.5002&articleId=123584439&d=1&t=3&u=e8d92d9efb244db79ef5728c2e5686f1)
943

被折叠的 条评论
为什么被折叠?



