please tell me where i am wrong i have used this approach which strikes my mind tell me where i am wrong
#include<bits/stdc++.h>
using namespace std;
int dp[1005][1005]={0};
int max_jump(int* arr,int i,int j,int n){
if(j>=n-1){
return 0;
}
if(dp[i][j]!=-1){
return dp[i][j];
}
int ans=INT_MAX;
for(int k=i+1;k<=j;k++){
ans=min(ans,1+max_jump(arr,k,arr[k]+k,n));
//cout<<ans<<" “<<i<<” "<<j<<endl;
}
dp[i][j]=ans;
return ans;
}
int main() {
int t,n;
cin>>t;
while(t–){
cin>>n;
memset(dp,-1,sizeof(dp));
int* arr=new int[n+1];
for(int i=0;i<n;i++){
cin>>arr[i];
}
cout<<max_jump(arr,0,arr[0],n)+1<<endl;
}
return 0;
}