一、题目
21根火柴,A和B每人每次可以取走1——4根,不可多取,也不可不取,取最后一根火柴者输,要求A先取,B后取。如何保证B永远是胜利者。
二、分析
即必须是B最后只留给A 1根火柴。也就是除了最后第21根火柴,之前的每一轮都必须保证A和B取到的火车数之和为5。
三、源码
1: #include <stdio.h>
2:
3: int main()
4: {
5: int A, B, nSpare = 21;
6: while (1)
7: {
8: printf("当前还有%d根火柴\n", nSpare);
9: printf("A:");
10: scanf("%d", &A);
11: if (A < 1 || A > 4 || A > nSpare)
12: {
13: printf("A wrong\n");
14: continue;
15: }
16:
17: nSpare -= A;
18: if (nSpare == 0)
19: {
20: printf("\n B win! Game over!\n");
21: break;
22: }
23:
24: B = 5 - A;
25: nSpare -= B;
26: printf("B:%d \n", B);
27: if (nSpare == 0)
28: {
29: printf("\n A win! Game over!\n");
30: break;
31: }
32: }
33:
34:
35: return 0;
36: }