Codeforce 893A Chess For Three (模拟)

本文介绍了一种算法,用于判断三个人轮流动态参与的象棋游戏中一系列胜负记录是否合理。通过模拟游戏过程,该算法能有效验证给定的胜负顺序是否符合游戏规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值