Why run error in 2 case

#include
using namespace std;
int main(){
long long int m,n;
cin>>m;
cin>>n;

long long int val[m];

for( long long int i=0;i<m;i++){
cin>>val[i];
}

bool dp[m+1][n+1];
for( long long int i=1;i<=m;i++){
dp[0][i]=false;
}
for( long long int i=0;i<=n;i++){
dp[i][0]=true;
}
for( long long int i=1;i<=m;i++){
for( long long int j=1;j<=n;j++){
if(val[i-1]>j){

        dp[i][j]=dp[i-1][j];
    }
    else{
        dp[i][j]=((dp[i-1][j])||(dp[i-1][j-val[i-1]]));
    }
}

}

if(dp[m][n]){
cout<<β€œYes”;
}
else{
cout<<β€œNo”;
}
}

Hi @dineshjani

As you have declared dp[m+1][n+1], you need to change i =0 int his loop and i<=n as you are assigning zero to all columns which have size n.

Similarly,

Change i<=n to i<=m here as you are assigning zero to all row elements.

Hope it Helps.