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

Hanoi双塔问题

时间:2018-09-03 13:42:50      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:格式   技术分享   思路   define   src   col   border   正整数   hid   

题目描述:

给定A、B、C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求:

(1)每次只能移动一个圆盘;

(2)A、B、C三根细柱上的圆盘都要保持上小下大的顺序;

任务:设An为2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出An

技术分享图片

输入格式:

一个正整数n,表示在A柱上放有2n个圆盘。

输出格式:

包含一个正整数, 为完成上述任务所需的最少移动次数An

样例输入:

2

样例输出:

6

思路:这题建立递归式就大功告成了,不过要高精。

不多说了,上代码:
技术分享图片
#include<cstdio>
#define len 1e4
#define maxn 100 
using namespace std;
int ans[maxn];
void multi(){
      int i,last=0;
      for(i=1;i<=ans[0];i++){
      ans[i]=ans[i]*2+last;
      last=ans[i]/len,ans[i]%=len;
    }
      if(last)ans[++ans[0]]=last;
}
int main(){
  int n,i;
  scanf("%d",&n);
  ans[0]=1,ans[1]=2;
  for(i=1;i<=n;i++)multi();  
  ans[1]-=2;  printf("%d",ans[ans[0]]);
  for(i=ans[0]-1;i>=1;i--)printf("%04d",ans[i]);
  return 0;
}
View Code

 

Hanoi双塔问题

标签:格式   技术分享   思路   define   src   col   border   正整数   hid   

原文地址:https://www.cnblogs.com/YFbing/p/9577838.html

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