10个小孩围成一圈分糖果,老师分给第一个孩子10块,第二个小孩2块,后面依次分的糖果数量为8、22、16、4、10、6、14、20。然后所有的小孩同时将手中的糖果分一半给右边的小孩,糖果为奇数的可向老师要一块。问经过几次后,大家手中的糖果的块数将一样多,每个人有多少糖果。
解答思路:这个问题可以先将每个人手中的一半糖果拿出来存储在一个数组中,将手中剩下的一半糖果在存储在一个数组中,可以看到这个是交错给予的过程,分解几个小问题,(1)分解一半,(2)给予,(3)遍历,奇数则加1(4)判断每个人的是否相等,不相等则重复(1)(2)(3),相等则结束
int[] arr = {10, 2, 8, 22, 16, 4, 10, 6, 14, 20};
第一轮:
int[] arr1 = {5, 1, 4, 11, 8, 2, 5, 3, 7, 10};
int[] arr2 = {5, 1, 4, 11, 8, 2, 5, 3, 7, 10};
假设arr2存储的是小孩手中剩下的糖果,arr1是小孩将要给右边小孩的糖果数,则arr2[i] =arr2[i]+arr1[i-1](1<=i<=9)
而arr2[0] = arr2[0]+arr1[9]
Java代码:
int[] arr =

一个关于10个小孩分糖果的问题,初始糖果分配不均。每次每个小孩将糖果数减半并给予右边的孩子,若剩余糖果数为奇数则向老师要1块。通过循环操作,直至所有小孩糖果数相同。解答思路包括糖果拆分、给予、遍历和判断相等。Java代码实现了解决方案。
最低0.47元/天 解锁文章
3397

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



