收集苹果(动态规划法,二维)

来源:互联网 发布:宜信大数据研发中心 编辑:程序博客网 时间:2024/05/16 12:53
//动态规划法//平面上有x*y个格子,每个格子中放着一定数量的苹果。//你从左上角的格子开始,每一步只能向下走或是向右走,每次走到一个格子上就把格子里的苹果收集起来,//这样下去,你最多能收集到多少个苹果。#include <iostream>#define N 100using namespace std;int MAX_APPLE(int A[][N], int x, int y){    int d[N][N];    for(int i=0;i<=x;i++)    {        for(int j=0;j<=y;j++) d[i][j]=0;    }    d[1][1]=A[1][1];    for(int i=1;i<=x;i++)    {        for(int j=1;j<=y;j++)        {            if(d[i-1][j] < d[i][j-1]) d[i][j]=A[i][j]+d[i][j-1];            else d[i][j]=A[i][j]+d[i-1][j];        }    }    return d[x][y];}int main(int argc, char *argv[]){    int A[N][N];    int x,y; cin >> x >> y;    for(int i=1;i<=x;i++)    {        for(int j=1;j<=y;j++) cin >> A[i][j];    }    cout << MAX_APPLE(A,x,y) <<endl;    cout << "Hello World!" << endl;    return 0;}
原创粉丝点击