• 分治 & 回溯 肌肉记忆


    重复性 重复性 重复性

    找重复性、分解问题、然后解决问题

    组合子问题

    分治 DIvider & Conquer

    python

    def divide_conquer(problem, param1, param2, ...) {
          # recursion terminator 
          if problem is None:
                print_result;
                return;
          # prepare data
          data = prepare_data(problem);
          subproblems = split_problem(problem, data);
          # conquer subproblems
          subresult1 = self.divide_conquer(subproblems[0], p1, ...);
          subresult2 = self.divide_conquer(subproblems[1], p1, ...);
          subresult3 = self.divide_conquer(subproblems[2], p1, ...);
          ...
          # process and generate the final result
          result = process(subresult1, subresult2, subresult3., ..);
    }
    

    javascript

    function divide_conquer(problem, param1, param2) {
      // recursion terminator
      if (problem === null) {
        process result;
        return;
      }
    
      // prepare data
      data = preprare_data(problem);
      subproblems = split_problem(problem, data);
    
      // conquer subproblems
      subresult1 = self.divide_conquer(subproblems[0], p1, ...);
      subresult2 = self.divide_conquer(subproblems[1], p1, ...);
      subresult3 = self.divide_conquer(subproblems[2], p1, ...);
    
      // process and generate the final result
      result = process_result(subresult1, subresult2, subresult3);
    
      // revert the current level status
    

    回溯

    回溯法采用试错的思想,它尝试分步骤的去解决一个问题,在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确解答的时候,它将取消上一步甚至是上几步的计算,再通过其他的可能的分步解答再次尝试寻找问题的答案。

    回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:

    • 找到一个可能存在的正确的答案
    • 在尝试了所有可能的分步方法后宣告该问题没有答案
      在最坏的情况下,回溯法会导致一次复杂度为指数时间的计算。
  • 相关阅读:
    eclipse安装插件最简单的方法!!
    mysql数据库导入sql文件的方法。
    拿起丢掉的东西,才叫做坚持。
    个人总结作业
    黄金点游戏程序注解
    结对项目的完成与体会
    第三周任务学习记录
    vs2013的安装与使用 测试
    习题作业
    对于四则运算编程自己的过程问题
  • 原文地址:https://www.cnblogs.com/ssaylo/p/13835267.html
Copyright © 2020-2023  润新知