首页 > 其他 > 详细

基础动态规划

时间:2021-06-12 15:29:01      阅读:24      评论:0      收藏:0      [点我收藏+]

例1:
题目:

从左下走到右上有多少种走法

#include<stdio.h>
int a[7][7];
int main()
{
    a[5][1]=1;
    for(int j=1;j<=5;j++)
    {
        for(int i=5;i>=1;i--)
        {   if(i==5&&j==1)
             a[i][j]=1;
             else
            a[i][j]=a[i+1][j]+a[i][j-1];//每个状态都只能从左和下来
        }
    }
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=5;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    printf("%d\n",a[1][5]);
}

 

 

 例2:
题目:
数字矩阵从左上到右下,每个格子的权值不同

for(int j=1;j<=m;j++)
    f[1][j]=a[i][j]+f[1][j-1];
for(int i=2;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        f[i][j]=max(f[i-1][j],f[i][j-1])+a[i][j];
    }
}

例3:
题目:

技术分享图片

 

    f[0][0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=v;j>=w[i];j--)
        {
            f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+p[i]);
        }
    }

 

基础动态规划

原文:https://www.cnblogs.com/aacm/p/14878261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!