回溯算法(leetcode 306 python)-程序员宅基地

技术标签: python  

回溯算法:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。

306 累加数

累加数是一个字符串,组成它的数字可以形成累加序列。

一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。

给定一个只包含数字 '0'-'9' 的字符串,编写一个算法来判断给定输入是否是累加数。

说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。

示例 1:

输入: "112358"
输出: true 
解释: 累加序列为: 1, 1, 2, 3, 5, 8 。1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8

示例 2:

输入: "199100199"
输出: true 
解释: 累加序列为: 1, 99, 100, 199。1 + 99 = 100, 99 + 100 = 199

class Solution(object):
    def isAdditiveNumber(self, num):
        """
        :type num: str
        :rtype: bool
        """
        path = []
        def build(nums, path):
            if len(path) >= 3 and path[-1] != path[-2] + path[-3]:
                return False
            if len(path) >= 3 and len(nums) == 0:
                return True
            for i in range(len(nums)):
                cur = nums[:i + 1]
                if cur[0] == '0' and len(cur) != 1:
                    continue
                if build(nums[i + 1:], path + [int(cur)]):
                    return True
            return False
        return build(num, path)

  

转载于:https://www.cnblogs.com/qkqBeer/articles/10167185.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Z685455/article/details/101583415

智能推荐

java汉诺塔暂停_玩一下java,顺便写了下汉诺塔问题,两种方法实现。-程序员宅基地

文章浏览阅读63次。1publicclassHanoi_X8023Z{2///3///将n个盘从one座借助two座,移动到three座.4///5///盘子个数6///第一个标识座A7///第二个标识座B8///第三个标识座C9voidhanoi(intn,Stringone,Stringtwo,Stringthree)10{11if(n==1)12{13move(...

linux 搜索FC存储设备,Linux FC-SAN存储搭建-程序员宅基地

文章浏览阅读2.8k次。配置:OS:Centos7.4FC-HBA:16Gb Qlogical QLE2692光纤卡服务器:IBM X3650一、查看FC HBA 卡的port name假如没有fc_host,加载qla2xxx 板块驱动,假如没有tcm_qla2xxx驱动,需要重新编译内核加载cat /sys/class/fc_host/host*/port_name0x10000090fa2a6b980x100000..._fc_host

前端----check的取值和回显赋值等.........._在前端进行check-程序员宅基地

文章浏览阅读2.4k次。取值的案例简单自己看 demo1

idea中如何pull多个模块项目_idea 多个git 项目一起拉取 pull-程序员宅基地

文章浏览阅读707次。点击项目VCS-->Update Project 即可将所有模块的代码pull到本地_idea 多个git 项目一起拉取 pull

php 5.4.23,PHP 5.5.7/5.4.23/5.3.28 紧急发布-程序员宅基地

文章浏览阅读68次。PHP 5.5.7/5.4.23/5.3.28紧急发布.2013-12-13.上个版本是2013-11-14的5.5.6/5.4.22。全部修正了一个 OpenSSL的安全漏洞(CVE-2013-6420)5.3本来已停止常规开发也更新了。 总共修正了10几个Bug(包括Opcache的几个Bug)及安全漏洞。完全改进:Version 5.5.712-Dec-2013Core:Fixed bu..._cve-2013-6420

华为Could API人工智能系列——文本合成MP3音频_api-huacloud.net-程序员宅基地

文章浏览阅读3.8k次,点赞61次,收藏41次。华为Could API人工智能系列——文本合成MP3音频_api-huacloud.net

随便推点

最全面的AndroidStudio配置指南总结-包括护眼模式_android studio safemode limitied function-程序员宅基地

文章浏览阅读2.5w次,点赞11次,收藏55次。使用AndroidStudio开发APP已有半年多的时间了,从刚开始的不习惯到慢慢适应再到逐渐喜欢上AndroidStudio,中间的过程颇有一番曲折,现在把自己对AndroidStudio的配置心得总结下来,分享给大家,希望给后来人带来方便(强迫症童鞋的护眼模式设置方法)_android studio safemode limitied function

android mapbox 添加多个点,android – 如何使用MapBox SDK获取标记的点击事件?-程序员宅基地

文章浏览阅读453次。我使用mapbox sdk提供的名为ItemizedIconOverlay的功能,在mapbox中获得了标记点击事件的解决方案.我做了如下:public void placeGTMarker() {alMarkerGT = new ArrayList();marker = new Marker("my Marker", "", latLng);marker.setMarker(activity.g..._mapbox 点击事件获取当前点 移动端

2020春节 python 爬虫有道词典 心得 (非delete_o 法)_有道翻译不删除_o用request不行了-程序员宅基地

文章浏览阅读612次。首先我找到;_有道翻译不删除_o用request不行了

修复phpcms自带采集无法采集https网站内容_phpcms有的网站不能采集-程序员宅基地

文章浏览阅读2.4k次。无法采集https的网站内容主要是https不支持file_get_contents获取内容,所以可以考虑采用curl的方式获取。(需要开启curl,可以在pathinfo里边查看)(1)打开phpcms\modules\collection\classes\collection.class.php在类里边添加新函数:protected static function curl_requ..._phpcms有的网站不能采集

realsense相机SDK——librealsense使用方法及bug解决(ubuntu)_realsnese相机sdk编译出错-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏48次。realsense环境配置参考https://blog.csdn.net/m0_43436602/article/details/110930512一、librealsense在哪里?安装完环境之后,可以去根目录下搜一下librealsense2.so看看,如果是用apt装的librealsense,应该和我的差不多。二、realsense库怎么用?我是apt install ros-kinetic-librealsense2安装的librealsense,故库文件的位置在opt/._realsnese相机sdk编译出错

SM2椭圆曲线公钥密码算法的JAVA实现-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏16次。2019独角兽企业重金招聘Python工程师标准>>> ..._java 把sm2公钥的r s, 按照asn1的标准计算