JiaoZhu and SC | ||||||
| ||||||
Description | ||||||
自从电子竞技在中国被认定为第99个正式体育项目,教主就投身其中,SC(StarCraft 星际争霸)他拿手的一款游戏,当然也有很多职业选手参与其中。 | ||||||
Input | ||||||
本题只有一组测试数据 | ||||||
Output | ||||||
对于每场比赛: | ||||||
Sample Input | ||||||
4 4 | ||||||
Sample Output | ||||||
End in a draw! | ||||||
Hint | ||||||
输入量巨大,建议使用scanf()与printf(),使用cin与cout可能会超时 | ||||||
Author | ||||||
Chadalt |
由于输入主体是一个字符串和一个字符,故采用结构体会比较方便
AC代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
struct sc { //采用结构体,分别存储选手名字和种族
char name[10];
char c;
};
int main()
{
int n, m; //n代表选手的数目,m代表比赛的场数
while (scanf("%d%d", &n, &m) != EOF) {
getchar();
struct sc * race = (struct sc *)malloc(n * sizeof(struct sc));
for (int i = 0; i < n; i++)
scanf("%s %c", race[i].name, &race[i].c); //输入n个选手的名字及对应的种族
for (int k = 0; k < m; k++) {
char s1[10], s2[10];
scanf("%s %s", s1, s2); //选手a和b的名字
for (int i = 0; i < n; i++) {
if (!strcmp(s1, race[i].name)) { //如果选手a是某个选手
for (int j = 0; j < n; j++) {
if (!strcmp(s2, race[j].name)) { //找到选手b对应的选手
//对于每场比赛:
// 选手A胜利 输出"XiaoM Wins!"
// 选手B胜利 输出"TianT Wins!"
// 平局 输出"End in a draw!"
// 1.使用人族的选手总是能战胜虫族选手
// 2.使用虫族的选手总是能战胜神族选手
// 3.使用神族的选手总是能战胜人族选手
//如果选手a满足这三种情况,输出“XiaoM Wins!”
if (race[i].c == 'T' && race[j].c == 'Z') { printf("XiaoM Wins!\n"); break; }
else if (race[i].c == 'Z' && race[j].c == 'P') { printf("XiaoM Wins!\n"); break; }
else if (race[i].c == 'P' && race[j].c == 'T') { printf("XiaoM Wins!\n"); break; }
//4.使用相同种族的选手对战总是产生平局
else if (race[i].c == race[j].c) { printf("End in a draw!\n"); break; }
//不满足以上四种情况,输出“TianT Wins!”
else { printf("TianT Wins!\n"); break; }
}
}
}
}
}
}
return 0;
}
PS:好久没写博客了,这段时间太忙了
2018.11.08 00:09 写于寝室