SDUT-1450 中国象棋

中国象棋

Time Limit: 1000MS  Memory Limit: 65536KB
Problem Description
 

中国象棋在中国有着悠久的历史,属于二人对抗性游戏的一种。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。是我国正式开展的78个体育项目之一,为促进该项目在世界范围内的普及和推广,在中国古代,象棋被列为士大夫们的修身之艺,现在则被视为怡神益智的一种有益的活动。在棋战中,人们可以从攻与防、虚与实、整体与局部等复杂关系的变化中悟出某种哲理。

象棋是由两人轮流走子,以“将死”或“困毙”对方将(帅)为胜的一种棋类运动,对局时,由执红棋的一方先走,双方轮流各走一着,直至分出胜、负、和,对局即终了。轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走一着。双方各走一着,称为一个回合。

在今天这个游戏中,每个玩家有七种棋子。它们有三种属性值,分别为“name”、“offense power” and “symbol letter”。具体见下表:

 

现在给出红色棋子玩家和黑色棋子玩家的棋子,你的任务是比较哪名玩家的offense power值大,注意:如果一名玩家只有马或只有炮或两者都没有,那么这名玩家的offense power会减少 1,但是offense power值不会减少到0,也就是最小为 1

Input
        输入的第一行为一个整数  T(0 < T <=20),代表有  组测试数据。

对于每组测试数据:

第一行为红色棋子玩家的棋子,第一行的第一个为一个整数 n (0 < n <= 16)。代表该玩家有 个棋子,接下来 个字符为该名玩家的棋子。

第二行为黑色棋子玩家的棋子,格式同红色棋子玩家。

Output
       对于每组测试数据,如果红色棋子玩家的 offense power较大,输出“ red”;如果黑色棋子玩家的 offense power只较大,输出“ black”;否则输出“ tie”(输出均不含引号 )
Example Input
1
5 A A B B F
3 A B F
Example Output
red
Hint
 
Author

qinchuan

#include <bits/stdc++.h>
using namespace std;
int offense();
char a;
int main()
{
    int tt;
    cin>>tt;
    getchar();
    while(tt--)
    {
        int a, b;
        a=offense();
        b=offense();
        if(a>b)
        {
            cout<<"red"<<endl;
        }
        else if(a<b)
        {
            cout<<"black"<<endl;
        }
        else if(a==b)
        {
            cout<<"tie"<<endl;
        }
    }
    return 0;
}
int offense()
{
    int tt;
    cin>>tt;
    getchar();
    int sum=1;
    int num1=0;
    int num2=0;
    while(tt--)
    {
        cin>>a;
        getchar();
        if(a=='A')
        {
            sum+=16;
        }
        else if(a=='B')
        {
            sum+=7;
            num1=1;
        }
        else if(a=='C')
        {
            sum+=8;
            num2++;
        }
        else if(a=='D')
        {
            sum+=1;
        }
        else if(a=='E')
        {
            sum+=1;
        }
        else if(a=='F')
        {
            sum+=2;
        }
        else if(a=='G')
        {
            sum+=3;
        }
    }
    if(num1&&num2)
    {
        ;
    }
    else
    {
        sum--;
    }
    return sum;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值