zoukankan      html  css  js  c++  java
  • 汉诺塔问题

    可参考视频:https://www.bilibili.com/video/av18710547/?p=34

    汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

    问题:有X,Y,Z三根柱子,在X柱子上从下往上按照大小顺序放着64片圆盘。把这64个圆盘从X柱子上摆放到Z柱子上,并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?


     1 #include <stdio.h>
     2 
     3 void Move(int n, char X, char Y, char Z)    //从上到下依次为第1,第2...第n个盘子
     4 {
     5     if(n == 1)
     6         printf("%c-->%c
    ", X, Z);
     7     else
     8     {
     9         Move(n-1, X, Z, Y);            //将n-1个盘子从X 借助Z 移动到Y上
    10         printf("%c-->%c
    ", X, Z);     //将第n个盘子从X上直接移动到Z上  
    11         Move(n-1, Y, X, Z);            //将n-1个盘子从Y 借助X 移动到Z上
    12     }
    13 }
  • 相关阅读:
    Thread
    投资
    DBLink
    sql
    列转行
    DataTable,DataView,DataRowView,DefaultView与DataSet
    Vue.js 基础学习之组件
    Vue.js 基础学习计算属性computed
    v-model的修饰符和使用
    Vue.js 基础学习 v-on 指令
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/9688426.html
Copyright © 2011-2022 走看看