家务分配问题
lcy和Ypop因为谁做家务的问题争执了起来,lcy每天辛辛苦苦上班,Ypop每天辛辛苦苦科研,其实这两个人都是大懒虫(其实lcy更懒),所以lcy和Ypop决定玩骰子游戏,
他们用三颗六面的骰子,游戏规则如下:
1.点数的优先级是1点最大,其次是6,5,4,3,2。
2.三个骰子点数相同,称为"豹子",豹子之间按点数优先级比较大小。
3.如果只有两个骰子点数相同,称为"对子",对子之间按点数优先级比较大小。
4.其他情况称为"点子",点子按点数和比较大小。
5.豹子比对子、点子大,对子比点子大,如果对子的点数优先级相同,就看剩余那个骰子的点数优先级。
现在给你lcy和Ypop投掷骰子的情况,判断一下胜负情况。
输入
第一行输入一个整数K,表示游戏的次数。 以后每两行表示一个样例,第一行是lcy骰子的点数。第二行是Ypop骰子的点数。
输出
如果是lcy赢,输出"lcy",如果是Bob赢,输出"Ypop",否则输出"Draw"。
样例输入
3
1 1 1
6 6 6
2 1 2
4 5 4
4 5 6
6 5 4
样例输出
lcy
Ypop
Draw
思路分析
本题可采用积分制,将游戏规则转化为积分,再比较他们的分数
AC代码
#include<stdio.h>
int K;
int a[3];
int b[3];
int f(int x,int y,int z);
int main()
{
scanf("%d",&K);
while(K--)
{
for(int i=0;i<3;i++)
scanf("%d",&a[i]);
for(int i=0;i<3;i++)
scanf("%d",&b[i]);
int l,B;
l=f(a[0],a[1],a[2]);
B=f(b[0],b[1],b[2]);
if(l==B) printf("Draw\n");
else if(l>B) printf("lcy\n");
else if(l<B) printf("Ypop\n");
}
return 0;
}
int f(int x,int y,int z)
{
int ans=0;
if(x==y&&x==z)
{
if(x==1) x=7;
ans=100+x;
}
else
{
if(x==y||x==z||y==z)
{
int t,r;
if(x==y)
{
t=x;
r=z;
}
else if(x==z)
{
t=x;
r=y;
}
else if(y==z)
{
t=y;
r=x;
}
if(t==1) t=7;
if(r==1) r=7;
ans=10*t+r;
}
else
{
ans=x+y+z;
}
}
return ans;
}