首页 > 其他 > 详细

洛谷P1288 取数游戏II 题解 博弈论

时间:2019-11-04 20:21:19      阅读:87      评论:0      收藏:0      [点我收藏+]

题目链接:https://www.luogu.org/problem/P1288
首先,如果你的一边的边是 \(0\) ,那么你肯定走另一边。
那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的话队首再走回来并去掉所有的值那么你就输了。
因为大家都绝对聪明,所以会选择将走过的边全部取完。
那么现在就面临着一个问题,你一开始要么往左走,要么往右走。
所以需要记录一下往左走的边数和往右走的边数,只要有一条路的边数是奇数,则先手赢;如果两条边都是偶数,则奇数赢。
实现代码如下:

#include <bits/stdc++.h>
using namespace std;
int n, a[22], n1, n2;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    for (int i = 1; i <= n && a[i]; n1 ++, i ++);
    for (int i = n; i >= 1 && a[i]; n2 ++, i --);
    puts( (n1%2 || n2%2) ? "YES" : "NO" );
    return 0;
}

洛谷P1288 取数游戏II 题解 博弈论

原文:https://www.cnblogs.com/codedecision/p/11793934.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!