ZKX's LAB

同时计算步数汉诺塔 汉诺塔1到9最快分别是几次? 可以告诉我计算方法吗?

2020-10-03知识8

汉诺塔,给你任意一种合法状态,你能计算出从当前到把所有的金片移动到第三个针上的最小步数? int hanio(int a,int b,int c,int n,int*result)/a,b,c 分别代表3根针,n是金片数/result是个长度为n的数组,第一位表示最小的金片,第二位表示次小的金片,.最后一位表示最大的数组./数组每个位上的值为a或b或c,.

同时计算步数汉诺塔 汉诺塔1到9最快分别是几次? 可以告诉我计算方法吗?

汉诺塔问题公式是什么? 汉诺塔问2113题(又称河内塔问题)5261是根据一个传说形成的一4102个问题:有三根杆子A,B,C。A杆上有N个1653(N>;1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:1.每次只能移动一个圆盘;2.大盘不能叠在小盘上面。提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。问:如何移?最少要移动多少次?一般取N=64。这样,最少需移动264-1次。即如果一秒钟能移动一块圆盘,仍将需5845.54亿年。目前按照宇宙大爆炸理论的推测,宇宙的年龄仅为137亿年。在真实玩具中,一般N=8;这将需移动255次。如果N=10,需移动1023次。如果N=15,需移动32767次;这就是说,如果一个人从3岁到99岁,每天移动一块圆盘,他仅能移动15块。如果N=20,需移动1048575次,即超过了一百万次。先看hanoi(1,one,two,three)的情况。这时直接将one柱上的一个盘子搬到three柱上。注意,这里one柱或three柱到底是A、B还是C并不重要,要记住的是函数第二个参数代表的柱上的一个盘被搬到第四个参数代表的柱上。为方便,将这个动作记为:one=》three再看hanoi(2,one,two,three)的情况。考虑到hanoi(1)的情况已经分析过了,可知这时。

同时计算步数汉诺塔 汉诺塔1到9最快分别是几次? 可以告诉我计算方法吗?

汉诺塔,给你任意一种合法状态,你能计算出从当前到把所有的金片移动到第三个针上的最小步数? int hanio(int a,int b,int c,int n,int*result)/a,b,c 分别代表3根针,n是金片数result是个长度为n的数组,第一位表示最小的金片,第二位表示次小的金片,.最后一位表示最大的数组。数组每个位上的值为a或b或c,表示该金片在哪个针上。显然,对于确定的result只有一种合法状态{if(n=1){if(result[n-1]=c)return 0;else return 1;}/如果只有一个金片,平凡情况else if(result[n-1]=c)return hanio(a,b,c,n-1,result);如果最大的金片在C针即第三根针上,该金片不动,问题转化为将n-1个金片移到C针上else if(result[n-1]=a)return hanio(a,c,b,n-1,result)+(1(n-1));如果最大金片在A针上,要先将该金片移到C针上,再考虑其他金片,说明要先将n-1个金片转到B针上,这可以把/B针和C针位置换一下即可。else return hanio(b,c,a,n-1,result)+(1(n-1));和前面的语句类似}int main(){int e;e为算法执行次数int n;n为金片多少int*r=new int[32];r表示金针的位置(即函数中的result)cin>;>;e;for(int i=0;i;i+){cin>;>;n;for(int j=0;j;j+)cin>;>;r[j];这里要防止r溢出cout(1,2,3,n,r);}}

同时计算步数汉诺塔 汉诺塔1到9最快分别是几次? 可以告诉我计算方法吗?

汉诺塔1到9最快分别是几次? 可以告诉我计算方法吗? 1层:1次百2层:3次3层:7次4层:15次5层:31次6层:63次7层:127次8层:255次9层:511次计算公式:f(x)=2^x-1扩展资料计算公式推导过程如下:假设度有n个圆盘,移动次数为f(n),根据经验,f(1)=1,f(2)=3以3层为例,进行推导。可把整个过程分知成三步,其中三个圆盘分别用A、B、C、代替且A的半径的半径的半径1、把A、B移到中道间的柱子,版需要f(2)步2、把C移动到第三根柱子,需要1步3、把A、B再移动到第三根柱子,需要f(2)步所以f(3)=f(2)+1+f(2)=7同理,当圆盘数量为4时,三个步骤分别需要f(3)步、1步、f(3)步,即f(4)=f(3)+1+f(3)=15由此可权得递推公式:f(x+1)=2*f(x)+1进一步可以通项公式:f(x)=2^x-1参考资料来源:-汉诺塔

#汉诺塔#python#python算法#递归算法#递归函数

随机阅读

qrcode
访问手机版