我是靠谱客的博主 风中歌曲,最近开发中收集的这篇文章主要介绍回溯算法-切割问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

回溯算法-切割问题
力扣131题
同样地按照回溯三部曲进行代码编写:
回溯三步曲
1.递归函数参数和返回值
2.确定终止条件
3.单层递归逻辑

1.递归函数参数和返回值
void backtracking(nums,start_index,result,path)
2.确认终止条件
该题的终止条件为叶子节点恰为空结点,此时判断条件可以转化为
if (start_index==nums.size):
result.append(path);
return;
3.单层递归逻辑
for (i=start_index;i<nums.size;i++)
{
if nums[start_index:i+1]是回文串:
{
path.push(nums[i]);
backtracking(nums,i+1,result,path)
path.pop();
}
else:
{
continiue;//结束此次循环
}
}

python代码如下:

class Solution:
    def partition(self, s: str) -> List[List[str]]:
        if len(s)==0:
            return
        result = []
        path = []
        self.backtracking(s,0,result,path)
        return result
    
    def backtracking(self,s,start_index,result,path):
        if start_index == len(s):
            result.append(path[:])
            return
        for i in range(start_index,len(s)):
            if not self.IsHuiwen(s[start_index:i+1]):
                continue
            path.append(s[start_index:i+1])
            self.backtracking(s,i+1,result,path)
            path.pop()
    def IsHuiwen(self,s):
        l = 0
        r = len(s)-1
        while l<r:
            if s[l]!=s[r]:
                return False
            l += 1
            r -= 1
        return True

最后

以上就是风中歌曲为你收集整理的回溯算法-切割问题的全部内容,希望文章能够帮你解决回溯算法-切割问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部