简单动态规划

来源:互联网 发布:淘宝联盟没有佣金原因 编辑:程序博客网 时间:2024/05/18 02:45

YMH同学是个爱玩的孩纸,总会想各种游戏来玩。这天,YMH同学又想到了一个好玩的游戏。在一个M行N列的矩阵中(0<N,M<=50),每一个小格子都有一个0到100的自然数,YMH同学想从左上角(1,1)跳到右下角(M,N)。跳的时候只能想下或者向右跳,每到达一个格子都会把那个格子里的数取走,YMH想要得到最大的总和,如果能帮她得到最大总和的话,她会给你这些总和 % 1 个糖果哦!

输入

第一行为整数M和N。

接下来是一个M*N的矩阵。

输出

一个整数,表示YMH同学所得到的最大总和。

样例输入

3 31 1 10 3 10 2
#include <iostream>#include <cstring>#include <cstdio>using namespace std;int dp[55][55]={};int mmap[55][55];int sum=0;int main(){    int m,n;    int i,j;    scanf("%d%d",&m,&n);    for(i=1;i<=m;++i)    {        for(j=1;j<=n;++j)        {            scanf("%d",&mmap[i][j]);        }    }    for(i=1;i<=m;++i)    {        for(j=1;j<=n;++j)        {            dp[i][j]=max(dp[i][j-1],dp[i-1][j])+mmap[i][j];        }    }    printf("%d",dp[m][n]);    return 0;}

0

样例输出

7


0 0
原创粉丝点击