码迷,mamicode.com
首页 > 编程语言 > 详细

Python编程题1--九九乘法表

时间:2020-08-08 17:44:07      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:pytho   int   字符   mat   代码   orm   end   使用   打印   

题目来源:算法竞赛进阶指南

题目标签:递归,动态规划

题目链接: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--九九乘法表

标签:pytho   int   字符   mat   代码   orm   end   使用   打印   

原文地址:https://www.cnblogs.com/wintest/p/13458210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!