只要我们循环运行第二步和第三步就能完成汉诺塔的非递归实现。 下面是我的AC代码: 1//非递归AC代码2//用cout最后一个测试会超时,改为printf就AC了34#include <iostream>5#include <string>6#include <cstring>7#include <stdio.h>8#include <cmath>9usingnamespacestd;10intn;//输入的盘子数1112classstack_...
7-17 汉诺塔的非递归实现 7-17 汉诺塔的非递归实现(25 分) 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。 输入格式: 输入为一个正整数N,即起始柱上的盘数。 ...
7-17 汉诺塔的非递归实现(25 分)(有待改进) 解题思路:1. 我们假设现在最小的圆盘在a柱子上,柱子为a,b,c 第一步:将最小圆盘移动到下一个柱子上,也就是b 第二步:对a柱子和c柱子进行顶上最小的元素进行判断,把小一点的那个圆盘移动到大一点的那个圆盘(有空则摞在空柱子上)。 重复上述两步就可以得到答...
a -> c 非递归实现 模拟递归栈操作 大量数据不应该使用 指针&链表 也不应该使用 cout #include <iostream>#include<vector>usingnamespacestd;//汉诺塔问题 n a b c n个数字 从a柱借助b柱移动到c柱//非递归实现classhanoiNode{public:intn,a,b,c; hanoiNode()=default; hanoiNode(intn_,inta_,intb_,...