hanoi(n,x,y,z)

{

hanoi(n-1,x,z,y);//n-1 from x to y

move(x,z);//x->z

hanoi(n-1,y,x,z);//n-1 from y to z

}

hanoi(n-1,x,z,y)

{

hanoi(n-2,x,y,z);//n-2 from x to z

move(x,y);//n-1 from x to y

hanoi(n-2,z,x,y);//n-2 from z to y

}

the step move(x,y)  is what  you must do to realize hanoi(n-2,x,y,z),at last ,the last step will meet the first step that you can implement easily,this is the deepest I can comprehend

//11072013 add

对hanoi T的印象从大二接触C语言开始

其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n – 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人//摘自百度

#include <stdio.h>
#define N 2 //N disks on original pillar void hanoi(char src, char mid, char dst, int n)
{
if (n == 1)
{
printf("Move disk %d from %c to %c\n", n, src, dst);
}
else {
hanoi(src, dst, mid, n - 1);
printf("Move disk %d from %c to %c\n", n, src, dst);
hanoi(mid, src, dst, n - 1);
}
} int main(void)
{
hanoi('A', 'B', 'C', N);
return 0;
}

借鉴了其他人的思路,总算稍微理解了上述算法的实现,整理步骤要点

the fact is that wo don't konw how to do but konw wo must do,and push to opration to the stack memory until we move the topest disk  to Z

a)step befor moving n to Z,the case is 1 to n-1 are on Y,the mothed is move n to Z,push the opration//the last opration

b)the last second situation is 1 to n-2 are on X,the mothed is move n-1 to Z,push the opration//second last opration

d)it is ease to see the first step is move n-(n-1) to X or Y

a and b is what we must do,and we have no other choices,but what has hanppend bettwen b and c,the stack has store all the oprations wo must do until c

assume the function can move 1 to n-1 to X or Y, so it can move 1 to n-2 to X or Y,and so on n-(n-1) to X or Y,it is easy to move n-(n-1) to X or Y

the reverse order you or the functon you build may implement,

e)n-1 disks on Y,put n on Z//after that,you can omit n on Z

f)n-2 disks on X,n-1 on Y//put the n-1 on Z,the question return to a,so a and b is the whole task need to resolve

****the last situation is 2 disks on X or Y

the whole steps is like ,if 1 OK,then 2OK;if 2 OK,then 3 OK

个人感悟:1,有时候踢皮球也是一种办法,此处是往上踢,有点默认路由的味道,没有别的选择

     2,当你身处多级环境中,而且视野范围有限的情况下,只能虚构方法,即使不知道方法是怎么实现

3,the original case only permit taking one disk once,but it does't conflact with the step e and f,e and f is the situation we need implement but the mothed we use.The mothed is very simple,anyone can see directly,we image the situation first ,here the mothed is not the point

4,let the stack store the opration but not your head

5,用递归证明可以实现,用反证证明只有一种方式

Hanoi T note的更多相关文章

  1. Codeforces777E. Hanoi Factory 2017-05-04 18:10 42人阅读 评论(0) 收藏

    E. Hanoi Factory time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  2. Python学习札记(十四) Function4 递归函数 & Hanoi Tower

    reference:递归函数 Note 1.在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. eg.计算阶乘: #!/usr/bin/env python3 def ...

  3. codeforces-777E Hanoi Factory (栈+贪心)

    题目传送门 题目大意: 现在一共有N个零件,如果存在:bi>=bj&&bj>ai的两个零件i,j,那么此时我们就可以将零件j放在零件i上.我们现在要组成一个大零件,使得高度 ...

  4. poj 1920 Towers of Hanoi

    Towers of Hanoi Time Limit: 3000MS   Memory Limit: 16000K Total Submissions: 2213   Accepted: 986 Ca ...

  5. zoj 2954 Hanoi Tower

    Hanoi Tower Time Limit: 2 Seconds Memory Limit: 65536 KB You all must know the puzzle named "Th ...

  6. Codeforces 777E:Hanoi Factory(贪心)

    Of course you have heard the famous task about Hanoi Towers, but did you know that there is a specia ...

  7. 三星Note 7停产,原来是吃了流程的亏

    三星Note 7发售两个月即成为全球噩梦,从首炸到传言停产仅仅47天.所谓"屋漏偏逢连天雨",相比华为.小米等品牌对其全球市场的挤压.侵蚀,Galaxy Note 7爆炸事件这场连 ...

  8. 《Note --- Unreal --- MemPro (CONTINUE... ...)》

    Mem pro 是一个主要集成内存泄露检测的工具,其具有自身的源码和GUI,在GUI中利用"Launch" button进行加载自己待检测的application,目前支持的平台为 ...

  9. 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. Linux下使用inode删除文件

    Linux 下有时候某些文件无法使用 rm 直接删除, 比如该文件的文件名含有终端不能正确显示的字符.# ls -litotal 0441511 -rw-r--r-- 1 root root 0 Ap ...

  2. java继承覆盖总结

      Java基础(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. java的继承与覆盖基本是java笔试中常出的题,也比较绕,我这里对java的继承覆盖做一个总结1.构造函数:      ...

  3. 【转】设计模式(九)外观模式Facade(结构型)

    设计模式--外观模式Facade(结构型): 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  4. 我的Mac软件集

    哥总算用上了mac,走上了小康了 phpstorm:个人工作中最常用的软件了 pycharm:这个写python的,和phpstorm是一家开发的 sourceTree:git 可视化工具 xcode ...

  5. 6 个JavaScript日期处理库

    1. Later.js Later.js, a stadalone JavaScript library, offers an advanced usage for triggering recurr ...

  6. awk统计nginx日志访问前一百的ip

    访问ip  awk '{print $1}' access.log| sort | uniq -c | sort -n -k 1 -r | head -n 100 访问地址 awk '{print $ ...

  7. linux环境下的伪分布式环境搭建

    本文的配置环境是VMware10+centos2.5. 在学习大数据过程中,首先是要搭建环境,通过实验,在这里简短粘贴书写关于自己搭建大数据伪分布式环境的经验. 如果感觉有问题,欢迎咨询评论. 一:伪 ...

  8. 【Android测试】【第十四节】Appium——简述

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5124340.html 前言 同样的,这一篇我要介绍的也是一 ...

  9. BAT 遍历文件夹和子文件夹下所有文件

    echo off & color 0A ::指定起始文件夹 set DIR="%cd%" echo DIR=%DIR% :: 参数 /R 表示需要遍历子文件夹,去掉表示不遍 ...

  10. Vmware安装与VMware下Linux系统安装

    源文件地址:http://www.cnblogs.com/lclq/p/5619271.html 1.下载安装VMware,我安装的是VMware 12.VMware从11开始不再支持32位系统,32 ...