程序设计题目3:“数娱”问题设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,小朋友8

程序设计题目3:“数娱”问题
设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,
小朋友8个,第四个小朋友22个,第五个小朋友 16个,第六个小朋友4个,第七个小朋友10个,第八个小朋友6个,第九个小朋友14个,第十个小朋友20个.然后所有的小朋友将自己手中的橘子分一半给右边的小朋友,橘子数为奇数的人可以向老师要一个.问经过这样几次调整后每个人手中的个数一样多,有几个?
用c++
waiwaicai 1年前 已收到1个回答 举报

zj9831 幼苗

共回答了19个问题采纳率:100% 举报

public class ShuYu {
public static void main(String[] args) {
int ary1[] = { 10, 2, 8, 22, 16, 4, 10, 6, 14, 20 };
int ary2[] = new int[10];
run(ary1, ary2);
}
/**
 * 给橘子.
 * @param ary1
 * @param ary2
 */
public static void aryAdd(int ary1[], int ary2[]) {
for (int i = 0; i < ary1.length; i++) {
// 给右边的一半橘子
if (i != ary1.length - 1) {
ary1[i] = ary1[i] + ary2[i + 1];
} else {
ary1[i] = ary1[i] + ary2[0];
}
}
ary2 = new int[10];
}
/**
 * 对半分橘子.
 * @param ary1
 * @param ary2
 */
public static void aryBreakUp(int ary1[], int ary2[]) {
for (int i = 0; i < ary1.length; i++) {
if (ary1[i] % 2 == 1) {
// 奇数的时候找老师要一个
ary1[i] = ary1[i] + 1;
}
ary2[i] = ary1[i] = ary1[i] / 2;
}
}
/**
 * 查看是否每个人手上的橘子数一样.
 * @param ary1
 * @param ary2
 */
public static boolean checkAry(int ary1[]) {
int i = ary1[0];
for (int j : ary1) {
if (j != i) {
return false;
}
}
return true;
}
/**
 * 开始跑.
 * @param ary1
 * @param ary2
 */
public static void run(int ary1[], int ary2[]) {
int loop = 0;
while (!checkAry(ary1)) {
loop++;
aryBreakUp(ary1, ary2);
aryAdd(ary1, ary2);
System.out.print("loop " + loop + ": ");
aryPrint(ary1);
}
}
/**
 * 打印数组.
 * @param ary1
 * @param ary2
 */
public static void aryPrint(int ary[]) {
for(int i : ary) {
System.out.print(i + " ");
}
System.out.print("n");
}
}

1年前

5
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.014 s. - webmaster@yulucn.com