python汉诺塔实践报告,Python实现汉诺塔

  python汉诺塔实践报告,Python实现汉诺塔

  问题:汉诺威递归算法的时间复杂度

  算法如下。

  说明:size表示汉诺威的规模,startStack表示汉诺威的开始,endStack表示完成,midStack表示辅助。

  defTowers(大小、开始堆栈、结束堆栈、中间堆栈) :

  如果大小==1:

  打印将磁盘从,第一个堆栈,到,最后一个堆栈

  否则:

  塔(尺寸-1,第一堆栈,中间堆栈,末端堆栈).

  塔(1,第一堆,末端堆,中间堆).

  塔(尺寸-1,中间堆叠,末端堆叠,第一堆叠).

  解析:设问题规模为n,t(n)为问题规模的必经步骤,

  t(n)=1t)1)2t(n-1)/小数位数为n-1时通过两次,所以变成2t) n-1)。

  =122t(n-1 )//因为小数位数为1时需要2步,t )1)=2

  =32[32t(n-2)] //当刻度为n-2时,重复上述操作。

  =94t(n-2)).

  =94[32t(n-3 ) ]

  =218t(n-3))。

  =C2^kt(n-k)))

  在n-k=1条件下,得到k=n-1,

  t(n)=C2)n-1)t)1)/其中t )1)=2

  t(n )=C 2^n

  总体而言,汉诺威的时间复杂度为O (2 n)

  注意:算法是用Python语言写的。

  Python的详细介绍:点击这里

  Python下载地址:点击这里

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: