查看: 1878|回复: 2
收起左侧

Hanoi problem

|只看干货 |刷题
头像被屏蔽

分享帖子到朋友圈
wwwyhx | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

上一篇:Microsoft : Find the largest square fits a rectangle
下一篇:Google: 最大无障碍点子矩阵
头像被屏蔽
 楼主| wwwyhx 2011-7-6 00:26:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Imbalism 2011-9-24 14:02:53 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (42)
 
 
0% (0)    👎
用stack替代递归

struct Step
{
     char from;
     char temp;
     char to;
     int n;
};

void Move(char from, char temp, char to, int n)
{
     stack< Step > ss;
     Step s = {from, temp, to, n};
     ss.push(s);
     while(ss.size() > 0)
     {
          Step intent = ss.top();
          assert(intent.n != 0);
          if(intent.n == 1)
          {
               cout << "move " << " from " << intent.from << " to " << intent.to << endl;
               ss.pop();
               continue;               
          }
          Step step1 = {intent.from, intent.to, intent.temp, intent.n - 1};
          Step step2 = {intent.from, intent.temp, intent.to, 1};          
          Step step3 = {intent.temp, intent.from, intent.to, intent.n - 1};

          ss.pop();
          ss.push(step3);
          ss.push(step2);
          ss.push(step1);
     }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

>
快速回复 返回顶部 返回列表