题目大意:给出象棋中棋子对应的能量值以及编号,给出红方和黑方目前的棋子编号,求谁的能量值更大,注意马炮同时存在总的能量值不变,否则减一。
解题思路:直接对红黑两方的棋子进行能量值计数,然后标记是否同时存在马和炮,最后比较两个值输出答案即可,详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4461
code:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int t,n,rans,bans;
bool rm,bm,rp,bp;
char str[2];
int map[8] = {16,7,8,1,1,2,3};
int main(){
freopen("input.txt","r",stdin);
scanf("%d",&t);
while(t--){
rans=0,bans=0;
rm=false;bm=false;
rp=false;bp=false;
scanf("%d",&n);
getchar();
for(int i=0;i<n;++i){
scanf("%s",str);
rans+=map[str[0]-'A'];
if(str[0]=='B') rm=true;
if(str[0]=='C') rp=true;
}
scanf("%d",&n);
getchar();
for(int i=0;i<n;++i){
scanf("%s",str);
bans+=map[str[0]-'A'];
if(str[0]=='B') bm=true;
if(str[0]=='C') bp=true;
}
if(rm && rp);
else rans--;
if(bm && bp);
else bans--;
if(rans==bans) printf("tie\n");
else if(rans>bans) printf("red\n");
else printf("black\n");
}
return 0;
}