• hdu 1799 循环多少次?(dp 起步)


    思路(参考大牛):

             抽象出来是排列组合题目

             从n个数里面选择m个数、按递增方式放在每一层循环

             高中的排列组合公式: Cn(m)=C(n-1)(m-1)+C(n-1)(m)
    #include<stdio.h>
    int a[2005][2005];
    int set()
    {
        for(int i=1;i<2001;i++)
        a[1][i]=i%1007,a[i][i]=1;
        for(int i=2;i<2001;i++)
        for(int j=i+1;j<2001;j++)
        a[i][j]=(a[i-1][j-1]+a[i][j-1])%1007;
        return 0;
    }
    int main()
    {
        int T,m,n;
        set();
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d %d",&m,&n);
            if(m>n)printf("0\n");
            else printf("%d\n",a[m][n]);
        }
        return 0;
    }

           动态规划算法通常用来解决最优化问题。这些问题可能存在多个解,每个解具有一个值。我们希 望找到一个具有最优(最大或最小)值的解。在 动态规划算法中,主要关心的是找到一个最优解  和求出最优解的值,而不是找出所有的最优解。

           用动态规划法求解的问题具有特征:
                1. 能够分解为相互重叠的若干子问题;一般的分冶法是分解为不相互重叠的;
                2. 满足最优性原理(也称最优子结构性质):该问题的
                最优解中也包含着其子问题的最优解。
                一定要记住动态规划采用的是自底向上的计算方法,后面关于数塔的问题完全阐述了这个观点;

           一般动态规划可以理解成,制作一张表,给表标上1-N的号码,将每个子问题都解决,得出结果后一一对应填入表中!

  • 相关阅读:
    ASP.NET MVC3实现无刷新验证码
    关闭数据库的xp_cmdshell命令以防止黑客攻击
    C#实现100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
    asp.net防止刷新时重复提交介绍
    SQL Server数据库开发中的十大问题
    C#实现WebQQ密码MD5加密算法
    JavaSE基础篇
    Jekins安装与配置(基于majaro)
    Jochen的golang小抄基础篇章二
    JavaSE之面向对象
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3008431.html
Copyright © 2020-2023  润新知