平台网站建设ppt模板下载,wordpress信息流广告,WordPress微信如何赚钱,张家港做网站的公司奇怪汉诺塔
ybtoj DP-1-2
题目大意
求四根柱子的汉诺塔问题
输出
共12行 每行输出第一根柱子有i个圆盘的最小步数
解题思路
设aia_iai表示三根柱子#xff0c;第一根柱子有i个圆盘的步数 很显然是先移i-1个到第二根#xff0c;再移最大的到第三根#xff0c;再把i-…奇怪汉诺塔
ybtoj DP-1-2
题目大意
求四根柱子的汉诺塔问题
输出
共12行 每行输出第一根柱子有i个圆盘的最小步数
解题思路
设aia_iai表示三根柱子第一根柱子有i个圆盘的步数 很显然是先移i-1个到第二根再移最大的到第三根再把i-1个移过去 ai2×ai−11a_i2\times a_{i-1}1ai2×ai−11 现在再考虑四根柱子的 可以先把其中若干移到第二根然后把剩下的移到第四根最后把第二根的移过去 fiminj0i−1{2×fjai−j}f_i\min_{j0}^{i-1}\begin{Bmatrix}2 \times f_j a_{i-j}\end{Bmatrix}fij0mini−1{2×fjai−j}
代码
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#define ll long long
using namespace std;
int a[100], f[100];
int main()
{memset(f, 127/3, sizeof(f));a[1] 1;f[1] 1;printf(1\n);for (int i 2; i 12; i){a[i] a[i - 1] * 2 1;for (int j 0; j i; j)f[i] min(f[i], f[j] * 2 a[i - j]);//递推printf(%d\n, f[i]);}return 0;
}