➤ Problem Link : CODEM4
👉 Hint : Take max and min while computing for dumb and smart player2 respectively
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int arr[32];
int n;
int GameDumb(int i,int j)
{
if(i<1 || j<1 || i>j || i>n || j>n)
return 0;
int ans=arr[i]+max(GameDumb(i+2,j),GameDumb(i+1,j-1)); //left
ans=max(ans,arr[j]+max(GameDumb(i,j-2),GameDumb(i+1,j-1))); //right
return ans;
}
int GameSmart(int i,int j)
{
if(i<1 || j<1 || i>j || i>n || j>n)
return 0;
int ans=arr[i]+min(GameSmart(i+2,j),GameSmart(i+1,j-1)); //left
ans=max(ans,arr[j]+min(GameSmart(i,j-2),GameSmart(i+1,j-1))); //right
return ans;
}
int main()
{
int t;
cin>>t;
string l,s;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>arr[i];
cout<<GameDumb(1,n)<<" ";
cout<<GameSmart(1,n)<<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!!
