摘花生
题目 摘花生
思路分析
和上题差不多
分析发现 每个点的状态可以从左边和上边推出来
状态表示仍为f[i][j] 表示 从起点走到ij 摘到花生的最大价值
状态转移方程可以为 f[i][j]=max(f[i-1][j]+w[i][j],f[i][j-1]+w[i][j]);
代码实现
#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;
}
💬 评论