保证过
2025-08-28 10:15:03
发布于:浙江
5阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n , m;
int main(){
cin >> m >> n;
int a[210][210] = {0};
int dp[210][210] = {0};
for(int i = 0 ; i < m ; i++){
for(int j = 0 ; j < n ; j++){
cin >> a[i][j];
}
}
int mid = n / 2;
for(int j = 0 ; j < n ; j++){
if(j == mid - 1 || j == mid || j == mid + 1){
dp[m - 1][j] = a[m - 1][j];
}
else{
dp[m - 1][j] = -1e9;
}
}
for(int i = m - 2 ; i >= 0 ; i--){
for(int j = 0 ; j < n ; j++){
int left = (j > 0) ? dp[i + 1][j - 1] : -1e9;
int center = dp[i + 1][j];
int right = (j < n - 1) ? dp[i + 1][j + 1] : -1e9;
dp[i][j] = max({left , center , right}) + a[i][j];
}
}
int ans = -1e9;
for(int j = 0 ; j < n ; j++){
if(dp[0][j] > ans){
ans = dp[0][j];
}
}
cout << ans << endl;
return 0;
}
这里空空如也
有帮助,赞一个