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--九九乘法表的主要内容,如果未能解决你的问题,请参考以下文章

使用循环语句编程输出下三角形状的九九乘法表

python经典题:九九乘法表和冒泡排序

python九九乘法口诀表

九九乘法表代码详解

python打印九九乘法表?

Python编程题汇总(持续更新中……)