• XTUOJ 1176 I Love Military Chess(模拟)


    

    I Love Military Chess

    Accepted : 45   Submit : 141
    Time Limit : 1000 MS  

    Memory Limit : 65536 KB 


    题目描写叙述

    陆军棋,又称陆战棋,简称军棋。是中国近代的一种两人棋类,设计依据军队中的军阶。

    每一方有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
    ");
               continue;
           }
           else if(b=='F')//获胜的情况
           {
               printf("Bingo
    ");
               continue;
           }
           else if(a=='B'||b=='B')//两方都消失的情况
            {
                printf("0
    ");
                continue;
            }
           else if(b=='M')//对是M(地雷)分情况考虑
           {
               if(a=='9')
               {
                   printf("1
    ");
                   continue;
               }
               else if(a=='B')
               {
                   printf("0
    ");
                   continue;
               }
               else
               {
                   printf("-1
    ");
                   continue;
               }
           }
          else if(a>'0'&&a<'10'&&a<b)//比較大小,普通的情况
            {
                printf("1
    ");
                continue;
            }
          else if(a>'0'&&a<'10'&&a>b)
            {
                printf("-1
    ");
                continue;
            }
         else if(a==b)
            {
                printf("0
    ");
                continue;
            }
        }
        return 0;
    }
    
    感觉这道题应该是去年的签到题,能做出来的还仅仅是这些简单题啊,能把如今自己能做出来的题目都做出来就不错啦!

    。加油!!


  • 相关阅读:
    python包的安装及依赖-pip wget pipdeptree
    Http、Socket、WebSocket之间联系与区别
    python的https请求移除ssl验证警告
    uwsgi启动django应用 https访问设置问题解决 & uwsgi: unrecognized option '--https' | ubuntu20.04
    图像frame大小计算
    完全实验|不完全实验|
    随机区组设计|拉丁方
    TPO2-3 Early Cinema
    TPO2-1Desert Formation
    TPO9-2Reflection in Teaching
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7230373.html
Copyright © 2020-2023  润新知