捡苹果问题动态规划

https://wenku.baidu.com/view/0b3355cc79563c1ec4da714a.html

(算法设计)给定一个N×M的表格,每个格子上放着一些苹果。如果你从最左上角的格子上开始走,每次只能向下或者向右走,每到一个格子你就把苹果收集起来。这样下去,你最多能够收集多少个苹果??

 

输入:N,M, 每个位置苹果数

输出:最多收集苹果数

样例输入:

 2   3

1      3       4

5      1       2

样例输出:

   10

特殊要求:算法空间复杂度为ON

提示:在计算过程中,会有哪些内容以后不再使用?

 

代码实现:不要求空间复杂度

#include
#include
#define maxn 100
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    int a[m][n],b[m][n];
    for(int i=0;i     for(int j=0;j     scanf("%d",&a[i][j]);
    
for(int i=0;i {for(int j=0;j {
    if(i==0&&j==0)
    b[0][0]=a[0][0];
    else
    b[i][j]=a[i][j]+max((i==0?0:b[i-1][j]),(j==0?0:b[i][j-1]));
}
}
    printf("%d",b[m-1][n-1]);
    return 0;
}

 

 

你可能感兴趣的:(捡苹果问题动态规划)