ODEM4 - Problem4 - SPOJ Solution C++

  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!!