Codeforce 893A Chess For Three (模拟)

题目大意:三个人一起下象棋,一局只能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

发布了37 篇原创文章 · 获赞 23 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zsheng_/article/details/78680793
今日推荐