您的位置:首页 > 其它

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

2016-04-16 09:03 375 查看
原题网址: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: