您的位置:首页 > 其它

简单动态规划

2016-04-17 18:36 267 查看
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[code]#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]
);
return 0;
}

0[/code]

样例输出

7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: