用栈来递归 模板 honoi

Posted COLORFUL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用栈来递归 模板 honoi相关的知识,希望对你有一定的参考价值。

用栈来模拟递归的技巧

 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<cstring>
#include<set>
#include<algorithm>
#include<stack>
#include<string>
#include<cstdio>
#define _for(i, a, b) for (int i = (a); i<(b); ++i)
using namespace std;
struct problem {
    int n;
    char scr, mid, dest;
    problem(int nn, char s, char m, char d) :n(nn), scr(s), mid(m), dest(d) {}
};
stack<problem> stk;

int main()                                  
{
    int n;
    cin >> n;
    stk.push(problem(n, A, B, C));
        while (!stk.empty()) {
            problem now = stk.top();
            stk.pop();
            if (now.n == 1) { cout << now.scr << "->" << now.dest << endl; }
            else {
                stk.push(problem(now.n - 1, now.mid, now.scr, now.dest));//先放最后一个子问题
                stk.push(problem(1, now.scr, now.mid, now.dest));
                stk.push(problem(now.n - 1, now.scr, now.dest, now.mid));
            }
        }
    
    system("pause");
} 

 

以上是关于用栈来递归 模板 honoi的主要内容,如果未能解决你的问题,请参考以下文章

算法题06-用栈来解决汉诺塔问题

Hanoi(汉诺塔问题)用栈来求解

用栈来求解汉诺塔问题

左神算法书籍《程序员代码面试指南》——1_06用栈来求解汉诺塔问题

数据结构——用栈来判断回文字符串

[LeetCode] 232. Implement Queue using Stacks 用栈来实现队列