湘大 XTU OJ 1290 Alice and Bob 题解(非常详细):字符串 分类讨论 简单模拟

一、链接

1290 Alice and Bob

二、题目

题目描述

Alice和Bob玩剪刀-石头-布的游戏,请你写个程序判断一下比赛的结果。

湘大 XTU OJ 1290 Alice and Bob 题解(非常详细):字符串 分类讨论 简单模拟_第1张图片

输入

第一行是一个整数K,表示样例的个数。
以后每行两个单词,rock表示石头,paper表示布,scissors表示剪刀。 前面一个单词是Alice出的拳,后面一个单词是Bob出的拳。

输出

平局输出"Draw",否则输出获胜者。

样例输入

3
rock paper
rock scissors
rock rock

样例输出

Bob
Alice
Draw

 

三、题意

多样例输入,石头剪刀布,输出比赛结果(平局或者胜利者的名字)

四、代码

c++代码

#include
#include

using namespace std;

char  a[10]="Alice";
char b[10]="Bob";
char c[10]="Draw";

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		char q1[20],q2[20];
		scanf("%s%s",q1,q2);
		if(q1[0]==q2[0])	printf("%s\n",c);
		else
		{
			if(q1[0]=='r')
			{
				if(q2[0]=='p')	printf("%s\n",b);
				if(q2[0]=='s')	printf("%s\n",a);
			}
			
			if(q1[0]=='p')
			{
				if(q2[0]=='r')	printf("%s\n",a);
				if(q2[0]=='s')	printf("%s\n",b);
			}
			
			if(q1[0]=='s')
			{
				if(q2[0]=='r')	printf("%s\n",b);
				if(q2[0]=='p')	printf("%s\n",a);
			}
		}
	}
	
	return 0;
}

c语言代码

#include

char a[10]="Alice";
char b[10]="Bob";
char c[10]="Draw";

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		char q1[10],q2[10];
		scanf("%s%s",q1,q2);
		
		if(q1[0]==q2[0])	printf("%s\n",c);
		else
		{
			if((q1[0]=='r'&&q2[0]=='s')||(q1[0]=='s'&&q2[0]=='p')||(q1[0]=='p'&&q2[0]=='r'))
				printf("%s\n",a);
			else
				printf("%s\n",b);
		}
	}
	
	return 0;
}

 

五、总结

1.相比于第一个代码,第二个代码,我重新设置了一个分类讨论的标准,代码更短,更加简洁

2.把需要输出的字符串定义为全局变量,输出的时候就非常简单,如果下次遇到需要输出的字符串比较多,也可以采取这种办法

3.进行条件判断的时候,只需要比较字符串的第一个字母就可以了,如果第一个字母有重复的,可以考虑比较第二个字母

六、精美图片

湘大 XTU OJ 1290 Alice and Bob 题解(非常详细):字符串 分类讨论 简单模拟_第2张图片

 

你可能感兴趣的:(算法竞赛,湘大,XTU,OJ,算法)