Java蓝桥杯分糖果_蓝桥杯 分糖果

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 22:17   34   0

3009f5775737

试题 分糖果.png

/*

这里是过程分析

3

2 2 4

2 3 3

2 4 4 补给 2

3 4 3

4 4 4 补给 4

*/

#include

#include

int N;//小朋友的个数

int tang[105];

int bu_tang = 0;//补给的糖果数

//调试用的函数

void printf_list()

{

int i;

for(i = 0; i < N; i++)

{

printf("%d\t", tang[i]);

}

printf("\n");

}

//补给 如果糖果个数为奇数则补给一颗糖果

void buji()

{

int i;

for(i = 0; i < N; i++)

{

if(tang[i] % 2 == 1)

{

tang[i]++;

bu_tang++;

}

}

}

void fenpei()

{

int x = tang[0] / 2;

tang[0] = tang[0] / 2;

int k;

for(k = 1; k < N; k++)

{

tang[k] = tang[k] / 2;

tang[k - 1] = tang[k] + tang[k - 1];

}

tang[N - 1] = x + tang[N - 1];

}

//检查糖果是否相等

int is_same()

{

int i;

for (i = 1; i < N; i++)

{

if(tang[i - 1] != tang[i])

{

return 0;

}

}

return 1;

}

int main()

{

scanf("%d", &N);

memset(tang, 0, sizeof(tang));

int j;

for(j = 0; j < N; j++)

{

scanf("%d", &tang[j]);

}

do{

buji();

fenpei();

printf_list();//不是必须,用来调试

} while(!is_same());

printf("%d\n", bu_tang);

return 0;

}

逻辑在代码中描述很清楚了,若是有比笔者更好的方法,希望一起讨论

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP