北大 算法 2.4 递归 汉诺塔问题手工解法以及编译过程

来源:互联网 发布:社会数据调查网站 编辑:程序博客网 时间:2024/05/19 03:43

具体的资料在视频里面都有,有人想要的话,可以私信我。这里就只记录我实现的代码。



#include <iostream>#include <stack>using namespace std;struct Problem{    int n;    char src,mid,dest;    Problem(int nn, char s, char m, char d):n(nn),src(s),mid(m),dest(d) {}};static stack<Problem> stk;int main(){    int n;    long long int count = 0;    cin>>n;    stk.push(Problem(n,'A','B','C'));    while(!stk.empty()){        Problem curPrb = stk.top();        stk.pop();        //if(curPrb.n == 1) cout<<curPrb.src<<"->"<<curPrb.dest<<endl,count;        if(curPrb.n==1) count++;        else{            stk.push(Problem(curPrb.n - 1,curPrb.mid,curPrb.src, curPrb.dest));            stk.push(Problem(1,curPrb.src,curPrb.mid,curPrb.dest));            stk.push(Problem(curPrb.n - 1, curPrb.src,curPrb.dest,curPrb.mid));        }    }    cout<<count<<endl;}


0 0
原创粉丝点击