XTUOJ 1176 I Love Military Chess(模拟)
I Love Military Chess |
||
| Accepted : 45 | Submit : 141 | |
| Time Limit : 1000 MS |
Memory Limit : 65536 KB |
|
题目描写叙述
|
| 军阶高低 | 棋子名称 | 各方枚数 | 特殊能力 |
|---|---|---|---|
| 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;
}
感觉这道题应该是去年的签到题,能做出来的还仅仅是这些简单题啊,能把如今自己能做出来的题目都做出来就不错啦!!
。加油!!



浙公网安备 33010602011771号