zoukankan      html  css  js  c++  java
  • Hanoi塔(分治法的应用)

    1.分治法

    分治法的设计思想是将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。

    一般来说,分治算法在每一层递归上都有3个步骤:

    (1)分解:将问题分解成一系列子问题。

    (2)求解:递归地求解各子问题。若子问题足够小,则直接求解。

    (3)合并:将子问题的解合并成原问题的解。

    2.Hanoi塔

    分治法的典型应用:

    当只有一个盘子时,直接从A移到C即可;

    如果已知n-1个盘子的移动方案,那么n个盘子的移动方案如下:

    先把前n-1个盘子从A借助C移动到B,再把第n个盘子从A直接移到C,然后再将B处的n-1个盘子从B处借助A移动到C处。至此就完成全部盘子的移动。

    void Hanoi(int n,char a,char b,char c) //将n个盘子从a通过b移动到c

    {

      if(n>1){

         Hanoi(n-1,a,c,b);//先将前n-1个盘子从a处通过b移动到b

         move(n,a,c);//将第n个盘子从a处直接移动到c

         Hanoi(n-1,b,a,c);//再将前n-1个盘子从了b处通过a移动到c

      }else{

         move(n,a,c);//只有一个盘子时,直接从a移动到c。递归出口

      }

    }

  • 相关阅读:
    Nginx,uWSGI与Django 应用的关系
    闭包学习-Python 篇
    Django学习之REST framework JWT Auth
    Python标准库uuid模块
    Django REST framework学习之JWT失效方式
    Django学习之JWT
    单点登录
    print输出格式总结
    百钱百鸡问题
    流程图符号及其功能
  • 原文地址:https://www.cnblogs.com/mingforyou/p/2225569.html
Copyright © 2011-2022 走看看