➤ Problem Link : BYTESM2
👉 Hint : Simple 2D DP
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int dp[101][101];
int arr[101][101];
int main()
{
int t,h,w;
cin>>t;
while(t--)
{
int x,y,z,ans=0;
cin>>h>>w;
memset(dp,0,sizeof(dp));
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
cin>>arr[i][j];
}
for(int i=0;i<w;i++)
dp[h-1][i]=arr[h-1][i];
for(int i=h-2;i>=0;i--)
{
for(int j=0;j<w;j++)
{
x=0,y=0;
if(j-1>=0)
x=dp[i+1][j-1];
if(j+1<w)
y=dp[i+1][j+1];
dp[i][j]=arr[i][j]+max(y,max(dp[i+1][j],x));
if(i==0)
ans=max(ans,dp[i][j]);
}
}
cout<<ans<<endl;
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
