📄 main.cpp
字号:
/**********************************************************************************
9. 四人玩火柴棍游戏,每一次都是三个人赢,一个人输。输的人要按赢者手中的火柴
数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后,
每人恰好输过一次, 而且每人手中都正好有16根火柴。问此四人做游戏前手中各有
多少根火柴? 编程解决此问题。
解决方法:
逆向思维:由现在每人拥有的火柴数向前倒推:
假设四个人分别是A,B,C,D; A=B=C=D=16
假设各人输的次序是A,B,C,D,则
D最后输,赔A,B,C火柴,可知A=B=C=16/2 = 8, D=40
C倒数第二输,赔A,B,D火柴,可知A=B=8/2 = 4, D = 20, C=36
依次类推..
********************************************************************************/
#include <stdio.h>
void main()
{
int i,j;
int nPerson[4];
//现在的数目
for(i=0; i<4; i++)
{
nPerson[i] = 16;
}
//逆推
for(i=3; i>=0; i--)
{
int pay = 0;
for(j=0; j<4; j++)
{
if(j != i)
{
nPerson[j] = nPerson[j]/2;
pay = pay + nPerson[j];
}
}
nPerson[i] = nPerson[i] + pay;
}
//输出原来的数目
for(i=0; i<4; i++)
{
printf("%4d", nPerson[i]);
}
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -