ztx

[SHOI2008]汉诺塔

ztx posted @ 2015年1月13日 19:21 in 递推与递归 , 406 阅读
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/****************************************\
* Author : ztx
* Title  : [SHOI2008]汉诺塔
* ALG    : 递推
* CMT    :
 
先解决子问题,把 x 柱上的 i-1 个圆盘移走,再把第 i 个大圆盘移走.
设y = to[x][i-1] , z = 0+1+2-y-x (即除 x , y 以外的柱子编号)
即 1)x 上 i-1 个圆盘移至 y 上
   2)将 x 上的第 i 个圆盘移至z
这时:
   若 f[y][i-1] = z :
      3)直接移到z结束
      此情况: f[x][i] = f[x][i-1]+1+f[y][i-1] , to[x][i] = z
   若 f[y][i-1] = x :
      3)i-1 个圆盘移至 x
      4)将 z 上的第 i 个圆盘移至 y
      5)x 上 i-1 个圆盘移至y结束
      此情况: f[x][i] = f[x][i-1]+1+f[y][i-1]+1+f[x][i-1] , to[x][i] = y
* Time   :
\****************************************/
  • 无匹配
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter