摘花生

题目 摘花生

image-2b6a7c86

思路分析

和上题差不多

分析发现 每个点的状态可以从左边和上边推出来

image-6828e2a8

状态表示仍为f[i][j] 表示 从起点走到ij 摘到花生的最大价值

状态转移方程可以为 f[i][j]=max(f[i-1][j]+w[i][j],f[i][j-1]+w[i][j]);

image-3f7e4b3d image-51ee5179

代码实现

#include<bits/stdc++.h>
using namespace std;

const int N=110;
int w[N][N];
int f[N][N];
int n,m;

int main()
{
    int T;cin>>T;
    while(T--){
        memset(w,0,sizeof w);
        memset(f,0,sizeof f);
        cin>>n>>m;

        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>w[i][j];
            }
        }

        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                f[i][j]=max(f[i-1][j]+w[i][j],f[i][j-1]+w[i][j]);
            }
        }
        cout<<f[n][m]<<endl;
    }
    return 0;
}

同类题型

视频讲解


⬅️ 传纸条 🏠 00-刷题理模型 ➡️ 数字三角形