*9. 四人玩火柴棍游戏,每一次都是三个人赢,一个人输。
输的人要按赢者手中的火柴数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后,每人恰好输过一次,
而且每人手中都正好有16根火柴。问此四人做游戏前手中各有多少根火柴? 编程解决此问题。*/
public class Test14 {
public static void main(String[] args) {
int[] arr = { 16, 16, 16, 16 };
//因为第4轮 都是16 因为每次都有一个人输
//那么推轮出 第3轮的时候 必然有个人输给了其他3人
//分给了其他三人手中有的火柴数 那么这三人的火柴数减半
//假设第4次的时候是a输了 那么在进行第4次之前:a=40(16+8+8+8),b=8(16/2) c=8(16/2) d=8(16/2)
//因条件得出每人恰好输过一次 那么a不可能再输了
//假设第3次是b输了, 那么在进行第3次之前: a=20(40/2),b=36(8+20+4+4),c=4(8/4),d=4(8/4)
//假设第2次c输了 那么在进行第2次之前: a=10(20/2) b = 18(36/2) c=34(10+18+4+4)d=4
//假设第1次 d输了 那么在进行第1次之前:a=5(10/2) b = 9(18/2) c=17(34/2) d = 33(4+5+9+17)
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (i != j) {
arr[j] = arr[j] / 2;
arr[i] += arr[j];
}
}
for (int j = 0; j < arr.length; j++) {
System.out.print (arr[j]+" ");
}
System.out.println();
}
System.out.print("分别有火柴数: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
输的人要按赢者手中的火柴数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后,每人恰好输过一次,
而且每人手中都正好有16根火柴。问此四人做游戏前手中各有多少根火柴? 编程解决此问题。*/
public class Test14 {
public static void main(String[] args) {
int[] arr = { 16, 16, 16, 16 };
//因为第4轮 都是16 因为每次都有一个人输
//那么推轮出 第3轮的时候 必然有个人输给了其他3人
//分给了其他三人手中有的火柴数 那么这三人的火柴数减半
//假设第4次的时候是a输了 那么在进行第4次之前:a=40(16+8+8+8),b=8(16/2) c=8(16/2) d=8(16/2)
//因条件得出每人恰好输过一次 那么a不可能再输了
//假设第3次是b输了, 那么在进行第3次之前: a=20(40/2),b=36(8+20+4+4),c=4(8/4),d=4(8/4)
//假设第2次c输了 那么在进行第2次之前: a=10(20/2) b = 18(36/2) c=34(10+18+4+4)d=4
//假设第1次 d输了 那么在进行第1次之前:a=5(10/2) b = 9(18/2) c=17(34/2) d = 33(4+5+9+17)
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (i != j) {
arr[j] = arr[j] / 2;
arr[i] += arr[j];
}
}
for (int j = 0; j < arr.length; j++) {
System.out.print (arr[j]+" ");
}
System.out.println();
}
System.out.print("分别有火柴数: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}