代码
柳神注解:ans表示n1和n2真实的结果,如果n1 > n2,ans为0,表示应该赌小,否则ans = 1,表示玩家应该赌大。T表示当前玩家有的筹码数,如果T=0,表示玩家已经输光,输出Game Over;如果t > T,表示玩家下注超过持有的筹码量,输出Not enough tokens. Total = 当前的T,如果真实结果ans等于玩家猜的结果,表示玩家赢了,筹码都归玩家,T += t;如果ans不等于b,表示玩家输了,筹码要减去t~
#include <iostream>
using namespace std;
int main() {
int T, K, n1, n2, b, t;
scanf("%d %d", &T, &K);
for (int i = 0; i < K; i++) {
scanf("%d %d %d %d", &n1, &b, &t, &n2);
int ans = n1 > n2 ? 0 : 1;
if (T == 0) {
printf("Game Over.\n");
return 0;
} else if (t > T) {
printf("Not enough tokens. Total = %d.\n", T);
} else if (ans == b) {
T += t;
printf("Win %d! Total = %d.\n", t, T);
} else if (ans != b) {
T -= t;
printf("Lose %d. Total = %d.\n", t, T);
}
}
return 0;
}
分析
1、很巧妙地用了一个三元运算符int ans = n1 > n2 ? 0 : 1;简化了计算。