【问题如下】(Hdoj1207) 【代码如下】(日后改进) /******************************************************** /* 程 序 名:汉诺塔Ⅱ /* 作 者:为了娶个美女老婆而AC /* 编程时间:2009年7月29日 /* 主要功能:递归算法的实现 *********************************************************/ #include<iostream> using namespace std;//编译命令 int main() { //主函数开始 int j,i,n; double a[70]={0,1,3,7,15},b[70]={0,1,3,5,9};//定义变量 for(i=4;i<=64;i++) { a[i]=2*a[i-1]+1;//将正常汉诺塔次数打表 } for(i=4;i<=64;i++) { double m=2*b[1]+a[i-1];//初始变量 for(j=1;j<i;j++) { if(2*b[j]+a[i-j]<m)//找出这些数的最小值 { b[i]=2*b[j]+a[i-j];//递推公式,打表 m=b[i]; } } } while(scanf("%d",&n)!=EOF) { printf("%d/n",int(b[n]));//输出提示信息 } return 0;//主函数结束 } 【运行结果】