摘花生题解
问:最多能摘多少花生
即求跟 最大路径和 一样
用数组b[i][j]存每个节点能摘到的最多花生数,如 □ 到达右下方的节点a[i][j]有2条路,在两条路选择花生数目最多的,加上该节点的花生数存到b[i][j],即b[i][j]=max(b[i-1][j-1],b[i-1][j])+a[i][j];
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n--){
int r,c,a[110][110]={0};
cin >> r>>c;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
int temp;
cin >> temp;
if(i!=1&&j!=1)a[i][j]=max(a[i-1][j],a[i][j-1])+temp;
else if(i==1)a[i][j]=a[i][j-1]+temp;
else if(j==1)a[i][j]=a[i-1][j]+temp;
}
}
cout << a[r][c] << endl;
}
return 0;
}