汉诺塔(Stack)

原创 2005年04月24日 20:11:00

class Hanoi
{
 friend void TowersOfHanoi(int);
 public:
  void TowersOfHanoi(int n, int x, int y, int z);
 private:
  Stack<int> *S[4];
};
// 把n个碟子从塔X 移到塔Y,可借助塔Z
void Hanoi::TowersOfHanoi(int n, int x, int y, int z)
{
 int d;
 if(n>0)
 {
  TowersOfHanoi(n-1, x, z, y);
  // 从x中移走一个碟子
  S[x]->Delete(d);
  // 把这个碟子放到y上
  S[y]->Add(d);
  showstate();
  TowersOfHanoi(n-1, z, y, x);
 }
}
void TowersOfHanoi(int n)
{
 Hanoi X;
 X.S[1]=new Stack<int>(n);
 X.S[2]=new Stack<int>(n);
 X.S[3]=new Stack<int>(n);
 // 把碟子从大到小放入塔1
 for(int d=n;d>0;d++)
  X.S[1]->Add(d);
 X.TowersOfHanoi(n, 1, 2, 3);
}

Ref:<<数据结构,算法与应用>>P170~172

用栈实现汉诺塔

汉诺(Hanoi)塔问题 又称为河内塔问题。有位僧人整天把三根柱子上的金盘倒来倒去,原来他是想把64个一个比一个小的金盘从一根柱子上移到另一根柱子上去。移动过程中遵守以下规则:每次只允许移动一只盘,...
  • xgf415
  • xgf415
  • 2016年07月26日 20:12
  • 3571

汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归

汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归 1. 汉诺塔问题的提法 汉诺塔问题是使用递归解决问题的经典范例。 传说婆罗门庙里有一个塔台,台上有3根标号为A、B、C的用钻石做成...
  • cainv89
  • cainv89
  • 2016年05月22日 23:32
  • 6606

227.Mock Hanoi Tower by Stacks-用栈模拟汉诺塔问题(容易题)

用栈模拟汉诺塔问题 题目 在经典的汉诺塔问题中,有 3 个塔和 N 个可用来堆砌成塔的不同大小的盘子。要求盘子必须按照从小到大的顺序从上往下堆 (如,任意一个盘子,其必须堆在比它大的盘子上面)...
  • Tri_Color_Flag
  • Tri_Color_Flag
  • 2016年09月13日 10:50
  • 1816

nyoj--93 汉诺塔(三)(stack)

nyoj 93题解用三个栈模拟。#include #include #include #include using namespace std;int t, p, q;bool solve()...
  • xushao_Movens
  • xushao_Movens
  • 2016年03月26日 16:36
  • 276

java实现汉诺塔算法

package com.ywx.count; import java.util.Scanner; /**  * @author Vashon  * date:20150410  *   * 题...
  • yangwenxue_admin
  • yangwenxue_admin
  • 2015年04月10日 14:14
  • 3547

汉诺塔 经典递归算法 in python

#coding:utf-8#coding:utf-8 #汉诺塔问题 n = int(input("输入初始化时A塔上盘子的个数n:\n")) def move( n , A , B ,C ): if...
  • u014496330
  • u014496330
  • 2015年03月25日 14:00
  • 3352

算法详解--汉诺塔

算法由来 小故事 汉诺塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家...
  • baidu_23086307
  • baidu_23086307
  • 2017年03月09日 10:24
  • 444

汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI

汉诺塔 汉诺塔II hdu1207: 先说汉若塔I(经典汉若塔问题),有三塔,A塔从小到大从上至下放有N个盘子,现在要搬到目标C上, 规则小的必需放在大的上面,每次搬一个,求最小步数。这个问题简...
  • u011721440
  • u011721440
  • 2014年07月20日 17:59
  • 1646

算法学习-类似汉诺塔的问题

题目: 汉诺塔问题比较经典,这里修改一下游戏规则: 现在限制不能从最左侧的塔直接移动到最右 侧,也不能从最右侧直接移动到最左侧,而是必须经过中间。求当塔有 N 层的时候,打印 最优移动过程和最优...
  • Luxia_24
  • Luxia_24
  • 2016年09月02日 15:51
  • 672

汉诺塔:最少移动次数&&路径 递归

汉诺塔: 三个柱子:A,B,C,A有n个环,讲n个环全部移动到C上,要求: 1>  移动次数最少; 2>  大环不能放在小环上。 输入: n(n 输出 : 移动次数 路径 例: 输...
  • qq_37517279
  • qq_37517279
  • 2017年03月04日 20:34
  • 1028
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汉诺塔(Stack)
举报原因:
原因补充:

(最多只允许输入30个字)