I Love Military Chess
题目描述![](http://202.197.224.59/OnlineJudge2/Public/Uploads/images/i.jpg)
![](http://202.197.224.59/OnlineJudge2/Public/Uploads/images/luzhanqi.jpg)
陆军棋,又称陆战棋,简称军棋,是中国近代的一种两人棋类,设计根据军队中的军阶。每一方有25枚棋子,先夺得对方军旗者为胜。
棋子
每一方的棋子为25枚,包括:
军阶高低 | 棋子名称 | 各方枚数 | 特殊能力 |
---|---|---|---|
1 | 司令 | 1 | 无 |
2 | 军长 | 1 | 无 |
3 | 师长 | 2 | 无 |
4 | 旅长 | 2 | 无 |
5 | 团长 | 2 | 无 |
6 | 营长 | 2 | 无 |
7 | 连长 | 3 | 无 |
8 | 排长 | 3 | 无 |
9 | 工兵 | 3 | 铁路上格数不限并可转弯,攻击胜过地雷 |
M | 地雷 | 3 | 不能移动,胜过其他一切攻击棋子,工兵/炸弹除外 |
B | 炸弹 | 2 | 遇到敌方棋子皆同归于尽,军旗也不例外 |
F | 军旗 | 1 | 不能移动,被攻击则拥有者输掉游戏 |
胜负一览
司令 > 军长 > 师长 > 旅长 > 团长 > 营长 > 连长 > 排长 > 工兵
炸弹与任何棋子相遇时,双方都消失
工兵 > 地雷
地雷 > 除炸弹和工兵以外的任何子粒
题目要求
请你帮忙判断两个棋子相碰时,谁出局。
输入
多组测试数据,每组数据占一行
每行有两个数字或字母,之间用空格隔开,表示前者经过移动,与后者相碰。
1 表示司令 2 表示军长 3 表示师长 4 表示旅长 5 表示团长 6 表示营长 7 表示连长 8 表示排长 9 表示工兵 M 表示地雷 B 表示炸弹 F 表示军旗
输出
对于每组数据输出一行,为两人的官阶比较结果
1 表示前者官阶比后者大
-1 表示前者官阶比后者小
0 表示两人同归于尽
Error 表示出错(军旗和地雷不能主动移动)
Bingo 表示前者获得胜利(扛取对方军旗)
样例输入
1 2 B M 9 1 B F 1 F M 1 F 1
样例输出
1 0 -1 Bingo Bingo Error Error
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <stdio.h> 2 3 int main() 4 { 5 char a,b; 6 while(scanf("%c %c",&a,&b)!=EOF) 7 { 8 getchar(); 9 int c=a-'0'; 10 int d=b-'0'; 11 if(c<10&&d<10) 12 { 13 if(c<d) puts("1"); 14 else if(c==d) puts("0"); 15 else puts("-1"); 16 } 17 else if(a=='M'||a=='F') puts("Error"); 18 else if(b=='M') 19 { 20 if(a=='9') puts("1"); 21 else if(a=='B') puts("0"); 22 else puts("-1"); 23 } 24 else if(b=='F') puts("Bingo"); 25 else if(a=='B'||b=='B') puts("0"); 26 27 } 28 return 0; 29 }