• 递归之找数


    “123456789”在这一字符串里面,任意位置添加“+”,“-”,“*”,“/”运算符,使得字符串表达式的值为50,输出所有可能的结果

    • 枚举,有多少种可能?开始算不出-----但是看到网上说任意位置指定的运算符 还要加上一个 “”空字符,然后就感觉---这想法真的是6,那么就是在1-9中间插位(8个间位)每个间位是5种可能---------5**8 = 390625种可能。。
        •     最无脑的写法就是写八个循环,然后判断表达式的值 
        •                递归写法,代码虽然讲究简洁,但是也应该满足易懂性。。。
           1 def get_res(op : list, res_list, tmps, s : str,):
           2 
           3     if not s:
           5         if eval(tmps) == 50:
           6             res_lis.append(tmps)
           7         return
           8     for i in op:
           9         # if len(s) >= 1:  感觉判断也是一个开销  既然知道会出现索引越界的问题 还不如直接 用异常捕获的好
          10         #     get_res(op, res_lis, tmps + i + s[0], s[1:])
          11         try:
          12             get_res(op, res_lis, tmps+i+s[0], s[1:])
          13         except IndexError as e:
          14             continue
          15 
          16 
          17 if __name__ == '__main__':
          18 
          19     s = "123456789"
          20     op = ["+", "-", "*", "/", ""]
          21     res_lis = []
          22     tmps = "1"
          23     get_res(op, res_lis, tmps, s[1:])

          这个空字符的想法真的太到位....但是我觉得用枚举是个憨憨办法,但是又没能设计一个好的数据结构去处理。对于这个树优化还可以从剪枝方面考虑。。但是实际,进行判断的话,时间还不如直接递归。。。

  • 相关阅读:
    sql 表连接
    easyui datagrid 列的内容超出所定义的列宽时,自动换行
    MySQL中函数CONCAT及GROUP_CONCAT
    第6章 Selenium2-Java 自动化测试模型
    第4章 Selenium2-java WebDriver API (三)
    第4章 Selenium2-java WebDriver API (二)
    第4章 Selenium2-java WebDriver API (一)
    第2章 Selenium2-java 测试环境搭建
    jsp导入外部样式
    第一章 Slenium2-Java 自动化测试基础
  • 原文地址:https://www.cnblogs.com/zengmu/p/12936952.html
Copyright © 2020-2023  润新知