题目描述 陆军棋,又称陆战棋,简称军棋,是中国近代的一种两人棋类,设计根据军队中的军阶。每一方有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 第二次小组赛,这次选题是湘潭市13年的比赛题,这次我们也只做出了三个题,感觉两个还是模拟的题,一个题是穷举过的。。。哎。。 模拟感觉就是要模拟题目所给的题意,要先把题目看完,题意搞懂,感觉一般题目会很长,要认真分析一下。哪些状态比较特殊的我们就优先考虑,把题目给的情况都考虑到就差不多啦; 下面是ac的代码: #include <stdio.h>
#include <cstring>
int main()
{
char a,b;
while(scanf("%c %c",&a,&b)!=EOF)
{
getchar();
if(a=='M' || a=='F')//这就是出错的情况
{
printf("Error\n");
continue;
}
else if(b=='F')//获胜的情况
{
printf("Bingo\n");
continue;
}
else if(a=='B'||b=='B')//双方都消失的情况
{
printf("0\n");
continue;
}
else if(b=='M')//对是M(地雷)分情况考虑
{
if(a=='9')
{
printf("1\n");
continue;
}
else if(a=='B')
{
printf("0\n");
continue;
}
else
{
printf("-1\n");
continue;
}
}
else if(a>'0'&&a<'10'&&a<b)//比较大小,普通的情况
{
printf("1\n");
continue;
}
else if(a>'0'&&a<'10'&&a>b)
{
printf("-1\n");
continue;
}
else if(a==b)
{
printf("0\n");
continue;
}
}
return 0;
}
感觉这道题应该是去年的签到题,能做出来的还只是这些简单题啊,能把现在自己能做出来的题目都做出来就不错啦!!!加油!! |