[POJ1958]Strange Towers of Hanoi
Posted sshwy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[POJ1958]Strange Towers of Hanoi相关的知识,希望对你有一定的参考价值。
分析
汉诺四塔
设 \(f[i]\) 表示求解 \(i\) 盘四塔的最少步数,设 \(d[i]\) 表示求解 \(i\) 盘三塔的最少步数:
\[
d[i]=2\cdot d[i-1]+1\f[i]=\min_j=1^i-1\left\2\cdot f[j]+d[i-j]\right\
\]
第二个递推式的含义是,将 \(j\) 盘在四塔模式下移动到一个中转柱,将剩余的 \(n-j\) 盘在三盘模式下移动到目标柱,再将那 \(j\) 个盘在四盘模式下移动到目标柱。
代码
#include<cstdio>
#include<algorithm>
using namespace std;
int n,f[20],d[20];
int D(int x)
if(x==1)return 1;
if(d[x])return d[x];
return d[x]=D(x-1)*2+1;
int F(int x)
if(x==1)return 1;
if(f[x])return f[x];
int res=0x3f3f3f3f;
for(int i=1;i<x;i++)res=min(res,F(i)*2+D(x-i));
return f[x]=res;
int main()
for(int i=1;i<=12;i++)printf("%d\n",F(i));
return 0;
以上是关于[POJ1958]Strange Towers of Hanoi的主要内容,如果未能解决你的问题,请参考以下文章
[POJ1958]Strange Towers of Hanoi (递推)
Strange Towers of Hanoi (POJ1958)
[POJ1958]Strange Towers of Hanoi
POJ 1958 Strange Towers of Hanoi 解题报告
Prob.2[动态规划+递推+划归思想的应用]POJ 1958 Strange Towers Of Hanoi Upd:2020.3.1