程序设计题目3:“数娱”问题设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,小朋友8个,第四个小朋友22个,第五个小朋友 16个,第六个小朋友4个,第七个小
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 16:48:07
![程序设计题目3:“数娱”问题设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,小朋友8个,第四个小朋友22个,第五个小朋友 16个,第六个小朋友4个,第七个小](/uploads/image/z/13565696-32-6.jpg?t=%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%A2%98%E7%9B%AE3%EF%BC%9A%E2%80%9C%E6%95%B0%E5%A8%B1%E2%80%9D%E9%97%AE%E9%A2%98%E8%AE%BE%E8%AE%A1%E8%A6%81%E6%B1%82%EF%BC%9A10%E4%B8%AA%E5%B0%8F%E6%9C%8B%E5%8F%8B%E5%9B%B4%E6%88%90%E4%B8%80%E4%B8%AA%E5%9C%88%E5%88%86%E6%A9%98%E5%AD%90%2C%E8%80%81%E5%B8%88%E5%88%86%E7%BB%99%E7%AC%AC%E4%B8%80%E5%B0%8F%E6%9C%8B%E5%8F%8B10%E4%B8%AA%2C%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%B0%8F%E6%9C%8B%E5%8F%8B2%E4%B8%AA%2C%E5%B0%8F%E6%9C%8B%E5%8F%8B8%E4%B8%AA%2C%E7%AC%AC%E5%9B%9B%E4%B8%AA%E5%B0%8F%E6%9C%8B%E5%8F%8B22%E4%B8%AA%2C%E7%AC%AC%E4%BA%94%E4%B8%AA%E5%B0%8F%E6%9C%8B%E5%8F%8B+16%E4%B8%AA%2C%E7%AC%AC%E5%85%AD%E4%B8%AA%E5%B0%8F%E6%9C%8B%E5%8F%8B4%E4%B8%AA%2C%E7%AC%AC%E4%B8%83%E4%B8%AA%E5%B0%8F)
程序设计题目3:“数娱”问题设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,小朋友8个,第四个小朋友22个,第五个小朋友 16个,第六个小朋友4个,第七个小
程序设计题目3:“数娱”问题
设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,
小朋友8个,第四个小朋友22个,第五个小朋友 16个,第六个小朋友4个,第七个小朋友10个,第八个小朋友6个,第九个小朋友14个,第十个小朋友20个.然后所有的小朋友将自己手中的橘子分一半给右边的小朋友,橘子数为奇数的人可以向老师要一个.问经过这样几次调整后每个人手中的个数一样多,有几个?
用c++
程序设计题目3:“数娱”问题设计要求:10个小朋友围成一个圈分橘子,老师分给第一小朋友10个,第二个小朋友2个,小朋友8个,第四个小朋友22个,第五个小朋友 16个,第六个小朋友4个,第七个小
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");
}
}