小题挺有意思的

zh的战争
Description

zh跟其余两人约战csgo,规则如下:

三人的编号分别为1,2,3

1和2先打,3旁观;游戏结束时,输的人成为下一场比赛的旁观者,赢家与当前旁观者对战。

他们一共玩了n场,并记录每一场比赛的赢家编号。请根据日志确定他们的记录是否正确。

Input

第一行包括一个整数n(1<=n<=100),表示n场比赛。

接下来的n行是日志。

每一行包括一个整数xi(1 <= xi <= 3),分别表示三人获胜的情况。

Output

输出"YES"或"NO",表示日志是否正确。

Sample Input 1

3
1
1
2
Sample Output 1

YES
Sample Input 2

2
1
2
Sample Output 2

NO

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include
using namespace std;
int a[100000];
struct stu{
int a; //shu
int b; // cishu
}b[100000];
bool cmp(stu a1,stu a2)
{
return a1.b<a2.b;
}
int main()
{
int n,i,j,m,k,sum,count;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
int flag=0; int t;
if(a[1]==3)
flag=1;
else
{

		if(a[1]==1)
		t=3;//不比赛的 
		else
		t=1;
		for(i=2;i<=n;i++)
		{
			if(a[i]!=a[i-1]&&a[i]!=t)
			{
				flag=1;
			}
			for(j=1;j<=3;j++)
			{
				if(j!=t&&j!=a[i-1])
				{
						t=j;
						break;
				}	
			}
		}	
	}
	if(flag==0)
	printf("YES\n");
	if(flag==1)
	printf("NO\n");
return 0;

}

猜你喜欢

转载自blog.csdn.net/weixin_43916298/article/details/84965221