Python编程题1--九九乘法表
Posted wintest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python编程题1--九九乘法表相关的知识,希望对你有一定的参考价值。
题目来源:算法竞赛进阶指南
题目标签:递归,动态规划
题目链接:https://www.acwing.com/problem/content/98/
思路:1.先用动态规划考虑三塔问题,状态转移方程为:d[ i ]=d[i - 1] * 2 + 1
(当前圆盘等于把当前圆盘上面的圆盘先移动到第二个塔,最后一个圆盘移动到第三个塔,上面的圆盘移动到第三个塔)
2.从三塔扩展到四塔:把当前塔上面的 j 个塔移动到某一个塔上(四塔问题), 把当前剩余的移动到最后一个塔上(三塔问题), 将前面 j 个塔移动到最后一个塔上(四塔问题)
状态转移方程:f[ i ]=min( f[ i ], f[ j ] * 2 + d[ n - j ])
代码:
#include <bits/stdc++.h> using namespace std; int main() { int d[15], f[15]; d[1] = 1; for(int i = 2; i <= 12; i++) { d[i] = 1 + d[i - 1] * 2; } memset(f, 0x3f, sizeof f); f[0] = 0; for(int i = 1; i <= 12; i++) for(int j = 0; j < i; j++) f[i] = min(f[i], f[j] * 2 + d[i - j]); for(int i = 1; i <= 12; i++) cout << f[i] << endl; return 0; }
以上是关于Python编程题1--九九乘法表的主要内容,如果未能解决你的问题,请参考以下文章