题目链接:uva 10254 - The Priest Mathematician
题目大意:四根柱子的汉诺塔问题,问说移动的最少次数。
解题思路:一开始想着说用两个大数数组f[N], b[N], 然后一定存在一个值k,使得f[i] = f[k] * 2 + b[i - k]最小,然后b[i] = b[i - 1] * 2+ 1,但是这样枚举k的计算量非常大。
然后参考别人打表找出来的规律,每次增长的个数为2个2^1,3个2^2,4个2^3.....m - 1个2^m。
#include <stdio.h>
#include <string.h>
#define max(a,b) (a)>(b)?(a):(b)
const int N = 1000