NOIp模拟3 取数游戏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOIp模拟3 取数游戏相关的知识,希望对你有一定的参考价值。
试题描述 |
有一个取数的游戏。初始时,给出一个环,环上的每条边上都有一个非负整数。这些整数中至少有一个0。然后,将一枚硬币放在环上的一个节点上。两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取数,取数的规则如下:
|
输入格式 |
第一行一个整数N(N≤20),表示环上的节点数。 |
输出格式 |
仅一行。若存在必胜策略,则输出“YES”,否则输出“NO”。 |
输入示例 |
输入样例一: |
输出示例 |
输出样例一: |
【分析】
博弈论的题目想明白了就很简单,比如这题是向起点的左右找连续非0的数的个数,只要有一边为奇数则先手必赢。
【代码】
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n, a[50], x1, x2; 5 6 int main() { 7 cin >> n; 8 for (int i=1;i<=n;++i) 9 cin >> a[i]; 10 for (int i=n;i>0;--i)//向左找 11 if (a[i]) 12 x1++; 13 else 14 break; 15 for (int i=1;i<=n;++i)//向右找 16 if (a[i]) 17 x2++; 18 else 19 break; 20 if (x1%2 || x2%2) 21 cout << "YES" << endl; 22 else 23 cout << "NO" << endl; 24 }
以上是关于NOIp模拟3 取数游戏的主要内容,如果未能解决你的问题,请参考以下文章