取数游戏II,洛谷之提高历练地,博弈论(3-6)

正题

      第二题:取数游戏II

      这一题就是枚举,因为起始点已经定了,明显的,最优策略肯定是把这条边取完。否则就给别人留下了后路。

      所以从1点开始,往前找大于0的边,往后找大于0的边,如果有其中一个是奇数,那么就输出Yes,否则就输出No,因为先手有决定往左走和往右走的权力

代码

#include
#include
#include

int n;
int s[30];
int tot=0;

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&s[i]);
	for(int i=1;i<=n;i++)
		if(s[i]==0) break;
		else tot++;
	if(tot%2==1) 
	{
		printf("YES");
		return 0;
	}
	tot=0;
	for(int i=n;i>=1;i--)
		if(s[i]==0) break;
		else tot++;
	if(tot%2==1) 
	{
		printf("YES");
		return 0;
	}
	printf("NO");
}

你可能感兴趣的:(取数游戏II,洛谷之提高历练地,博弈论(3-6))