题目大意:三个人一起下象棋,一局只能2个人同时下,还有一个人要旁观,所以游戏规则是:第一局规定Alex和Bob下,Carl围观,后面则按照输的人去围观轮流来下棋。问题是:输入一组数据,为赢的人的顺序,让你判断这种赢的顺序是否可能,可能的话输出YES,否则输出NO。
解题思路:每一局输的人则不能参加下一轮游戏,根据这一点来判断,直接模拟下棋过程。具体看代码
代码如下:
#include<iostream>
using namespace std;
int n,a,b,c;
int win[110];
bool flag;
int main()
{
while(cin>>n)
{
flag=true;
for(int i=0;i<n;i++)
{
cin>>win[i];
}
int a=1,b=2,c=3;
int t;
for(int i=0;i<n;i++)
{
if(a==win[i]) //第一局A胜
{
t=b;
b=c;
c=t;
}
else if(b==win[i])
{
t=a;
a=c;
c=t;
}
else
{
flag=false;
continue;
}
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
~step by step