牛牛的汉诺塔
题目链接 题目描述 汉诺塔是一个经典问题,相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。 牛牛很快就理解了代码的意思并且写出了求解汉诺塔的程序,他现在想研究汉诺塔的规律。 请你统计以下信息:A->B,A->C,B->A,B->C,C->A,C->B的次数,以及所有移动的总步数。 思路 总步数好算,是 ,然后就是打表大法 , 怪我太菜 打表后,找规律,如果把上述的信息以一个数组 ~ 存放的话,可以发现 n为奇数: f[i][1] = f[i - 1][1]; f[i][4] = f[i - 1][4]; f[i][5] = f[i - 1][5]; f[i][6] = f[i - 1][5] * 2 + i / 2; f[i][2] = f[i][6] + (i + 1) / 2; f[i][3] = f[i][6]; n为偶数: f[i][2] = f[i - 1][2]; f[i][3] = f[i - 1][3]; f[i][6] = f[i - 1][6]; f[i][5] =