撿蘋果問題動態規劃
阿新 • • 發佈:2018-11-12
https://wenku.baidu.com/view/0b3355cc79563c1ec4da714a.html
(演算法設計)給定一個N×M的表格,每個格子上放著一些蘋果。如果你從最左上角的格子上開始走,每次只能向下或者向右走,每到一個格子你就把蘋果收集起來。這樣下去,你最多能夠收集多少個蘋果??
輸入:N,M, 每個位置蘋果數
輸出:最多收集蘋果數
樣例輸入:
2 3
1 3 4
5 1 2
樣例輸出:
10
特殊要求:演算法空間複雜度為O(N)
提示:在計算過程中,會有哪些內容以後不再使用?
程式碼實現:不要求空間複雜度
#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;
}