力扣(LeetCode)294. 翻转游戏 II(2022.10.21)

你和朋友玩一个叫做「翻转游戏」的游戏。游戏规则如下:

给你一个字符串 currentState ,其中只含 ‘+’ 和 ‘-’ 。你和朋友轮流将 连续 的两个 “++” 反转成 “–” 。当一方无法进行有效的翻转时便意味着游戏结束,则另一方获胜。默认每个人都会采取最优策略。

请你写出一个函数来判定起始玩家 是否存在必胜的方案 :如果存在,返回 true ;否则,返回 false 。

示例 1:

输入:currentState = “++++”
输出:true
解释:起始玩家可将中间的 “++” 翻转变为 “±-+” 从而得胜。

示例 2:

输入:currentState = “+”
输出:false

提示:

1 <= currentState.length <= 60
currentState[i] 不是 ‘+’ 就是 ‘-’

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/flip-game-ii

方法一:回溯

C++提交内容:

class Solution {
public:
    bool canWin(string currentState) 
    {   //回溯
        string s = currentState;       
        int n = s.size();
        for (int i = 0; i < n - 1; i ++)
        {
            if (s[i] == '+' && s[i+1] == '+')
            {
                s[i] = '-';
                s[i+1] = '-';
                if (canWin (s) == false)
                    return true;
                s[i] = '+';             
                s[i+1] = '+';           
            }
        }
        return false;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChaoYue_miku

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值