![]() |
|
--------------------------------------------------editorial---------------------------------------------------------
in this peoblem dp state is 2 d not 3 d dp[a][b] since for a given a and b c will always remain same ,
just memorise whether a,b,c state has come before or not...
-----------------------------------------------------------code---------------------------------------------
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int dp[5500][5500];
string f="impossible";
int nc=0;
class BearPlaysDiv2
{
int equal(int a,int b,int c)
{
if(a>=0 && b>=0 && c>=0)
{
nc++;
if(dp[a][b]==0)
{
if(a==b && b==c)
{
f="possible";
}
{
dp[a][b]=1;
dp[a][c]=1;
dp[b][c]=1;
dp[b][a]=1;
dp[c][a]=1;
dp[c][b]=1;
equal(a+a,b-a,c);
equal(a+a,c-a,b);
equal(b+b,c-b,a);
equal(b+b,a-b,c);
equal(c+c,b-c,a);
equal(c+c,a-c,b);
}
}
}
return 0;
}
string equalPiles(int a, int b, int c)
{
equal(a,b,c);
return f;
}
};
No comments:
Post a Comment