回溯算法(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

智能推荐

EGE——罗盘时钟_ege画旋转表盘指针-程序员宅基地

文章浏览阅读649次。【代码】EGE——罗盘时钟。_ege画旋转表盘指针

某招聘软件sig及sp参数,魔改base64(下)-程序员宅基地

文章浏览阅读1.3k次,点赞36次,收藏14次。也就是说,从这里到补环境一大片分析过程对我们的结果都无关紧要,只是最开始的时候传参出了点问题.但我觉得中间这一段排查问题的过程是很重要的,或许中间这段才是整片文章最重要的,因为用unidbg去跑so大部分时候补完环境结果都是和正确结果不太吻合的,或者说是如果so里有暗桩,直接生成的结果要么直接无法通过请求,要么就是会被标记,请求量一上来就给你封掉,这些都是在使用unidbg中需要考虑的问题,而上面的分析流程或许会在你使用unidbg的过程中提供些一些思路.至于算法还原,全程分析下来我并不是按照上面的

移动开发环境的搭建步骤及开发工具下载_移动app基本的环境搭建要点-程序员宅基地

文章浏览阅读2.9k次。 依据开发的平台不同,移动开发可以分为两个方向:Pocket PC (简称PPC,又称掌上电脑)和 SmartPhone(即智能手机)。 同样,搭建开发平台时,依据这两个开发方向,要在PC端安装不同的开发工具,下表列出的是微软为其Windows Mobile 操作系统提供的开发工具,版本从 2003 到最新的 6.0,点击相应名称可以下载。 注意:1.大部分连接是指向微软网站的,只_移动app基本的环境搭建要点

【架构】Java实现游戏引擎_java游戏引擎开发与实践-程序员宅基地

文章浏览阅读2.3k次,点赞9次,收藏13次。学过编程后,感觉所有的游戏都离不开两个方法,一个是画面更新,一个是指令输入。既然大多数的游戏都离不开这几步,那么为了便利游戏的开发,一些工程师就把这几个方法抽象出来,定义为一个规范,游戏开发者只需要根据这个规范实现游戏的业务逻辑就可以简单高效的开发出一个游戏。这个规范就是所谓的。这篇文章就用JAVA语言来实现一个简易的游戏引擎。_java游戏引擎开发与实践

Qt Creator下载和安装(详细教程)_win7下载qt库-程序员宅基地

文章浏览阅读2.9w次,点赞13次,收藏97次。简介Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址:http://www.qt.io/也可以访问Qt项目域名:http://qt-project.org/Qt本身支持众多操作系统。从通用操作系统Linux、Windows,到手机系统Android、iOS、WinPhone,嵌入式系统支持QNX、VxWorks,应用非常广泛。基于Qt的软件非常多,其中最知名的要数Linux桌面系统KDE(涵盖无数以K打头的应用软件)。国内WPS for Linux版本_win7下载qt库

【计算机网络实验】访问控制列表NAT应用——华为eNSP(详细实验报告+代码)_访问控制列表配置实验心得-程序员宅基地

文章浏览阅读4k次,点赞2次,收藏41次。4 实验五:访问控制列表—NAT应用4.1 实验目的和内容(1)掌握ACL在企业网络中的应用(2)掌握ACL的工作原理(3)掌握ACL的配置4.2 实验过程4.2.1 基本ACL(1)拓扑图            图24 基本ACL拓扑图(2)实验代码交换机system-view vlan batch 2 3 interface gigabitethernet 0/0/2 port link-type access port default vlan 2 interface_访问控制列表配置实验心得

随便推点

C语言:求给定正整数n以内的素数之积。(n<28)_6-9 求正整数n以内的素数之积-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏40次。#include "stdio.h"#include"conio.h"void TestFunc(); long fun(int n){ /**********Begin**********/ long i,k;long s=1; for(i=2;i<=n;i++) {for(k=2;k<i;k++) if(i%k==0)break; if(k==i)s=s*i; }return s; /********** E_6-9 求正整数n以内的素数之积

ES(Elasticsearch)中间件_es中间件-程序员宅基地

文章浏览阅读3.2k次。文章目录配置连接ES全文搜索引擎:全文搜索引擎就是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。官网地址:连接:配置连接ESspring: elasticsearch: rest: uris: 127.0.0.1:9200 read-timeout: 30s connection-timeout: 5s..._es中间件

AgileEAS.NET SOA中间件平台简易入门_agileeas.net soa配置oracle数据库-程序员宅基地

文章浏览阅读3.5k次。首先说明此平台来自魏琼东大神,可被商业使用,但是不开源的哈。AgileEAS.NET SOA中间件平台 下载闲话少说,直接步入正题。一、数据库的配置打开\agileeas.net.5.0\bin\dotnet\目录下的EAS.DbInitializer.exe文件进行数据连接配置如图。点击下一步点击完成,弹出的框选择是(如果原来数据库中有重要数据,记得先备份_agileeas.net soa配置oracle数据库

数据结构:树(Tree)【详解】_数据结构 树-程序员宅基地

文章浏览阅读10w+次,点赞956次,收藏4.7k次。树一、知识框架二、考纲内容树的基本概念二叉树二叉树的定义及其主要特征;二叉树的顺序存储结构和链式存储结构;二叉树的遍历;线索二叉树的基本概念和构造树、森林树的存储结构;森林与二叉树的转换;树和森林的遍历树与二叉树的应用二叉排序树;平衡二叉树;哈夫曼树和哈弗编码三、树的基本概念1、树的定义树是n(n>=0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足:有且仅有一个特定的称为根的结点。当n>1时,其余节点可分为m(m>_数据结构 树

【uoj#139】[UER #4]被删除的黑白树 贪心-程序员宅基地

文章浏览阅读71次。题目描述给出一个 $n$ 个节点的树,$1$ 号点为根。现要将其中一些点染成黑色,使得每个叶子节点(不包括根节点)到根节点路径上的黑点数相同。求最多能够染多少个黑点。题解贪心显然有结论:选择的黑点尽量靠近叶子节点。并且显然每个点到根节点路径上的黑点数是:深度最小的叶子节点到根节点路径上的点数。那么首先预处理出每个点子树内深度最小的叶子节点的深度,然后进行贪心过..._一棵树 删除叶子节点到根节点路径上的所有节点 森林 最多几棵树

fastapi 入门系列-程序员宅基地

文章浏览阅读7k次,点赞10次,收藏58次。FastAPI是一个现代、快速(高性能)的Web框架,用于构建API。它基于Python 3.7+的类型提示(type hints)和异步编程(asyncio)能力,使得代码易于编写、阅读和维护。FastAPI具有自动交互式文档(基于OpenAPI规范和JSON Schema)、数据验证、依赖注入(Dependency Injection)等功能,这些功能使得API的开发速度更快、更可靠。FastAPI还支持WebSocket和GraphQL,可以轻松地扩展到更复杂的应用场景。_fastapi

推荐文章

热门文章

相关标签