逆推-四人玩火柴棍游戏

*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] + "   ");
}


}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值