您的位置:首页 > 其它

洛谷P1328 生活大爆炸版石头剪刀布——S.B.S.

2016-05-02 16:46 239 查看
题目描述
石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8 集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;//0 表示“剪刀”,1 表示“石头”,2 表示“布”,3 表示“蜥蜴人”,  4 表示“斯波克”
int pd(int,int);
int main()
{
int da=0,db=0,s,n,na,nb,a[201]={0x7f},b[201]={0x7f},heada=0,taila=1,headb=0,tailb=1;
cin>>n>>na>>nb;taila=na+1;tailb=nb+1;
for(int i=1;i<=na;i++) cin>>a[i];
for(int i=1;i<=nb;i++) cin>>b[i];
for(int i=1;i<=n;i++)
{
heada++;headb++;
if(heada==taila) heada=1;
if(headb==tailb) headb=1;
s=pd(a[heada],b[headb]);
if(s==1) da++;
if(s==-1) db++;
s=0;
}
cout<<da<<" "<<db;
return 0;
}
int pd(int aa,int bb)
{
if(aa==0&&bb==0) return 0;
if(aa==0&&bb==1) return -1;
if(aa==0&&bb==2) return 1;
if(aa==0&&bb==3) return 1;
if(aa==0&&bb==4) return -1;
if(aa==1&&bb==0) return 1;
if(aa==1&&bb==1) return 0;
if(aa==1&&bb==2) return -1;
if(aa==1&&bb==3) return 1;
if(aa==1&&bb==4) return -1;
if(aa==2&&bb==0) return -1;
if(aa==2&&bb==1) return 1;
if(aa==2&&bb==2) return 0;
if(aa==2&&bb==3) return -1;
if(aa==2&&bb==4) return 1;
if(aa==3&&bb==0) return -1;
if(aa==3&&bb==1) return -1;
if(aa==3&&bb==2) return 1;
if(aa==3&&bb==3) return 0;
if(aa==3&&bb==4) return 1;
if(aa==4&&bb==4) return 0;
if(aa==4&&bb==0) return 1;
if(aa==4&&bb==1) return 1;
if(aa==4&&bb==2) return -1;
if(aa==4&&bb==3) return -1;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: