当前位置:首页 > 培训职业 > 正文

java10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6, 14,2

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);

}

}

多重随机标签

猜你喜欢文章