回溯之博弈论:我能赢吗

464. 我能赢吗

概念介绍

今天学习到了两个新的概念「状态压缩」「记忆化搜索」

虽然这两个名词是我今天第一次弄明白意思,但是这两个方法的思想在之前经常使用!!在文章经典回溯算法:集合划分问题回溯算法:单词拆分均有使用这两种方法

问题分析

问题详情可见 我能赢吗

首先来介绍「博弈论」和「回溯算法」是如何相结合滴!!关于回溯算法的详细介绍可见 回溯(DFS)

其实如果回溯的题目做多了之后,就可以对这一类题目的套路有更加深刻的理解。也就是文章 回溯(DFS) 里面说的需要搞清楚「路径」「选择」「结束条件」三个要素!

回到这个题目上面来,对于「先手」和「后手」来说,只有次序的不一样,其他部分完全一致

每个人每次的「选择」即为从n个数中选择一个,但有一个前提:已经被选过的数无法再被选择,所以需要一个标记

简简单单的画一下这个问题的「回溯树」吧!!

1

代码实现

下面给出完整的代码