1. 程式人生 > >撿蘋果問題動態規劃

撿蘋果問題動態規劃

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

(演算法設計)給定一個N×M的表格,每個格子上放著一些蘋果。如果你從最左上角的格子上開始走,每次只能向下或者向右走,每到一個格子你就把蘋果收集起來。這樣下去,你最多能夠收集多少個蘋果??

 

輸入:N,M, 每個位置蘋果數

輸出:最多收集蘋果數

樣例輸入:

 2   3

1      3       4

5      1       2

樣例輸出:

   10

特殊要求:演算法空間複雜度為ON

提示:在計算過程中,會有哪些內容以後不再使用?

 

程式碼實現:不要求空間複雜度

#include<stdio.h>
#include<math.h>
#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<m;i++)
    for(int j=0;j<n;j++)
    scanf("%d",&a[i][j]);
    
for(int i=0;i<m;i++)
{for(int j=0;j<n;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;
}