码迷,mamicode.com
首页 > 其他好文 > 详细

7-17 汉诺塔的非递归实现

时间:2018-02-18 23:40:03      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:int   har   非递归   item   body   none   技术   alt   分享   

7-17 汉诺塔的非递归实现(25 分)

借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。

输入格式:

输入为一个正整数N,即起始柱上的盘数。

输出格式:

每个操作(移动)占一行,按柱1 -> 柱2的格式输出。

输入样例:

3

输出样例:

a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c

思路:试了下递归,然而第三个测试用例运行超时。非递归待定
技术分享图片
#include<stdio.h>
#include<iostream>
using namespace std;
void f(int n, char a, char b, char c)
{
    if (n == 1)cout << a<<" -> "<< c << endl;
    else {
        f(n - 1, a, c, b);
        cout << a << " -> " << c << endl;
        f(n - 1, b, a, c);
    }
}
int main()
{
    int n; 
    cin >> n;
    f(n, a, b, c);
    return 0;
}
递归未AC代码

 



7-17 汉诺塔的非递归实现

标签:int   har   非递归   item   body   none   技术   alt   分享   

原文地址:https://www.cnblogs.com/zengguoqiang/p/8451988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!