以0表示加号,1表示减号

#! /usr/bin/env python
#coding=utf-8
#! /usr/bin/env python
#coding=utf-8
from __future__ import divisiondef Backtrack(depth):global numberOfTriangle,n,symbolTriangle,count#引用全局变量if count>(n*(n+1))/4:#count大于三角形中符号数的一半时,进行剪枝,因为显然此时不会得到符合条件的解了returnif depth>=n: #到达叶子结点if count==n*(n+1)/4: #加号个数是符号总数的一半,即加号数=减号数时numberOfTriangle=numberOfTriangle+1print('triangles %s:' % numberOfTriangle) #打印出符合条件的三角形print symbolTriangle[0]print symbolTriangle[1]print symbolTriangle[2]returnelse:returnfor i in range(0,2): #左子树到右子树的遍历symbolTriangle[0][depth]=i #给第一层的第depth+1个结点赋值count=count+ifor j in range(1,depth+1): #依据第一层可得到完整三角形symbolTriangle[j][depth-j]=symbolTriangle[j-1][depth-j]^symbolTriangle[j-1][depth-j+1]count=count+symbolTriangle[j][depth-j]Backtrack(depth+1)#进入下个结点for j in range(1,depth+1): #从上个结点退出时需要对count作减法运算count=count-symbolTriangle[j][depth-j]count=count-idef main():global symbolTriangle,n,numberOfTriangle,count#全局变量,分别表示符号三角形,符号三角形第一层的符号数,符合条件的三角形个数,符号三角形中的加号个数symbolTriangle=[]n=3numberOfTriangle=0count=0 #开始时加号个数为0for i in range(0,n): #初始化符号三角形symbolTriangle.append([])for j in range(0,n-i):symbolTriangle[i].append(1)Backtrack(0) #进入回溯print('numbeOfTriangle:%s' % numberOfTriangle)#打印出符合条件的三角形个数main()

Python回溯法解符号三角形问题相关推荐

  1. python回溯法解9*9数独

    文章目录 前言 一.回溯法解数独代码 总结 前言 看了labuladong算法小抄里的回溯法,照着模板,加入自己的理解,用python做了个解9*9数独的回溯法,. 一.回溯法解数独代码 直接上代码: ...

  2. 打印符号三角形问题java_回溯法之符号三角形问题

    问题描述: 由14个"+"号和14个"-"号组成的符号三角形. 2个同号下面是"+"号,2个异号下面是"-"号. 如图: ...

  3. python 回溯法 子集树模板

    回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足 ...

  4. 回溯法,回溯法解装载问题

    一.回溯法有"通用的解题法"之称,可以系统的搜索一个问题的所有解或任一解.它在问题的解空间中按深度优先策略,从根节点出发,搜索解空间树.算法搜索至解空间树的任一节点时,先判断该节点 ...

  5. 回溯法解旅行商问题java,回溯法解旅行商问题 | 学步园

    第一次编写,格式写的比较混乱.先把源码上来吧.这个源码是模仿教材上的(本人学生一枚 ).分析过程在下面. #include using namespace std; class Traveling{ ...

  6. n皇后问题python_Python:回溯法解N皇后问题

    这个算法采用的是一维数组,皇后个数即数组长度,数组值即对应行皇后所在的列. 按照每行至上而下,每一行从第一列起尝试放置皇后,每次仅需判断对于已经放置的皇后是否产生冲突.如果某个位置可以放置,则放置皇后 ...

  7. python 回溯法 子集树模板 系列 —— 3、0-1背包问题

    问题 给定N个物品和一个背包.物品i的重量是Wi,其价值位Vi ,背包的容量为C.问应该如何选择装入背包的物品,使得放入背包的物品的总价值为最大? 分析 显然,放入背包的物品,是N个物品的所有子集的其 ...

  8. python 回溯法 01背包问题_回溯法解决01背包问题

    回溯法是一个既带有系统性又带有跳跃性的搜索算法. 它在包含问题的所有解的解空间树中按照 深度优先的策略, 从根节点出发搜索解空间树. 算法搜索至解空间树的任一节点时, 总是先判断 该节点是否肯定不包含 ...

  9. 【算法分析】回溯法解数独(九宫格)算法

    这篇文章,是来详细介绍怎样写出一个算法,来解出所有的数独问题.算法的程序运行时间,缩减在了毫秒级别.等到这篇文章结束,我会抽时间写一篇文章,介绍如何生成一个随机的唯一解的数独问题.另外,为了做图形方便 ...

最新文章

  1. 总结个人项目设计保障5大原则
  2. Docker1.12.1之swarm集群搭建与使用
  3. pyqt 多线程使用
  4. python3 open()内置函数
  5. OO实现ALV TABLE 三:ALV的功能设计
  6. 反思供应链项目:实践出真知 多反思提升效率的方法
  7. Kafka消费者APi
  8. java 文本 从列开始_如何从sql java中检索文本列?
  9. hdu4513--Manacher算法--回文串的O(n)算法
  10. mysql动态sql是什么,mysql中动态sql的一次实际应用
  11. 测试工程师听了想打人
  12. linux用户怎么归纳到组,Linux用户和组命令总结
  13. pandas求协方差、相关系数、显著性检验
  14. ECharts图表组件与FusionCharts图表组件对比
  15. C A+B for Input-Output Practice (II) SDUT
  16. 雅诗兰黛公司以2019年乳腺癌防治运动团结全世界并带来希望
  17. 办理ICP证、SP证、BBS证及非经营性网站(ICP)备案常见问题解答
  18. Handler简单介绍
  19. 学习OpCode前言
  20. oracle智能纠错,《Oracle DBA手记》一书勘误表

热门文章

  1. 2021年起重机械指挥考试报名及起重机械指挥考试总结
  2. EF技巧(1)-创建DbContext
  3. 学机械能去计算机,《动能 势能 机械能》案例与反思
  4. 分享100个Java方面PPT学习资料
  5. AI大牛汤晓鸥:AlphaGo之后大家还能做点什么?| 演讲
  6. Visual Novel Maker v1.0.1074 视觉小说游戏制作软件
  7. proteus常用元件图示和名称(持续更新...)
  8. LeetCode——209.长度最小的子数组
  9. 中国海洋大学-信息系统开发(Java)复习
  10. CSDN学霸课表——软件设计师、信息系统监理师、数据库系统工程师、系统分析师