why memoized solution fails in this problem: Source //below is the given code
//can you help me spot some patterns to optimise it!!!
lli solve(lli x,lli y,lli e,lli w) { if(dp[x][y]!=100000) {
return dp[x][y]; } if((x*x+y*y)==e*e) { return 0; } for(int i=1;i<=N;i++) { if(((x+coins[i].a)*(x+coins[i].a)+(y+coins[i].b)*(y+coins[i].b))<=e*e) { dp[x][y]=min(dp[x][y],(solve(x+coins[i].a,y+coins[i].b,e,i)+1)); } } return dp[x][y];
} int main() { cin>>n; for(int i=1;i<=n;i++) { f=0; for(int j=0;j<1001;j++) { for(int k=0;k<1001;k++) dp[j][k]=100000; } for(int i=0;i<100000;i++) dp1[i]=100000; cin>>N>>e; for(int j=1;j<=N;j++) { cin>>x>>y; coins[j].a=x; coins[j].b=y; } lli d=solve(0,0,e,0); if(d==100000) cout<<"not possible"<<endl; else cout<<d<<endl; } }