您的位置:首页 > 编程语言 > C语言/C++

CCF认证-201703-1-分蛋糕 C语言代码实现(100分)

2019-02-28 20:13 134 查看
#include<stdio.h>
int main()
{
int n, k, flag = 0, sum, count, weight = 0;
sum = count = 0;
int a[1000] = {0};
scanf("%d%d", &n, &k);
for(int i; i < n; i++)
{
scanf("%d", &a[i]);
weight += a[i];// weight表示剩余的蛋糕重量;
}
while(weight > k)
{
for(int j = flag; j < n; j++)
{
sum += a[j];// sum表示发给每个人的蛋糕重量;
weight -= a[j];
if(sum >= k)
{
count++;
flag = j + 1; // flag记录发放蛋糕的断点;
if(weight < k)
break;// 易错点,若不加break,则for循环会继续执行,
// 导致最后weight值一定是零;
// 测试代码:printf("%d  %d\n",sum, weight)   输出中间值;
sum = 0; // sum归零,重新记录;
}
}

}

if(weight > 0)
printf("%d", count + 1);
else if(weight == 0)
printf("%d", count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: