java10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6, 14,2
- 培训职业
- 2025-05-06 17:34:34
16次调整后每人都有18块糖.
我建立了2个class,一个algo负责算法(两个method分别分糖和测试是否平均)一个main负责测试数据.
public class Algo {
public void equalize_candies(int[] children){
int children_count = children.length;
if(children_count < 2)
return;
int[] candy_to_pass = new int[children_count];
int candies;
for(int i=0; i<children_count-1; i++){
candies = children[i];
candy_to_pass[i+1] = children[i]/2;
children[i] /= 2;
}
//for last child
candies = children[children_count-1];
candy_to_pass[0] = candies/2;
children[children_count-1] /= 2;
for(int i=0; i<children_count; i++){
candies = children[i]+candy_to_pass[i];
if(candies % 2 == 0)
children[i] = candies;
else
children[i] = candies+1;
}
}
public boolean is_equal(int[] children){
for(int i=0; i<children.length-1; i++){
if(children[i] != children[i+1])
return false;
}
// all others are equal, compare the first and the last
return children[0] == children[children.length-1];
}
}
public class Test {
public static void main(String[] args) {
int[] children = new int[]{12,2,8,22,16,4,10,6,14,2};
Algo algo = new Algo();
int loop_count = 0;
while(!algo.is_equal(children)){
loop_count ++;
algo.equalize_candies(children);
}
System.out.println(loop_count);
}
}
上一篇
上海复旦大学学科排名
下一篇
海南大学24考研报名人数
多重随机标签