LeetCode 294. Flip Game II(反转游戏II)

来源:互联网 发布:东方网络彭朋 编辑:程序博客网 时间:2024/05/24 02:31

原题网址:https://leetcode.com/problems/flip-game-ii/

You are playing the following Flip Game with your friend: Given a string that contains only these two characters: + and -, you and your friend take turns to flip twoconsecutive "++" into "--". The game ends when a person can no longer make a move and therefore the other person will be the winner.

Write a function to determine if the starting player can guarantee a win.

For example, given s = "++++", return true. The starting player can guarantee a win by flipping the middle "++" to become "+--+".

Follow up:
Derive your algorithm's runtime complexity.

方法:MinMax算法,深度优先搜索

public class Solution {    private boolean canWin(char[] sa) {        for(int i=0; i<sa.length-1; i++) {            if (sa[i]=='+' && sa[i+1]=='+') {                sa[i]='-';                sa[i+1]='-';                boolean otherCanWin = canWin(sa);                sa[i]='+';                sa[i+1]='+';                if (!otherCanWin) return true;            }        }        return false;    }    public boolean canWin(String s) {        return canWin(s.toCharArray());    }}

这道题有个很牛的算法,我没看懂。。。

参考:

https://leetcode.com/discuss/64344/theory-matters-from-backtracking-128ms-to-dp-0ms

http://www.1point3acres.com/bbs/thread-144510-1-1.html

http://www.1point3acres.com/bbs/thread-137953-1-1.html

0 0
原创粉丝点击