I was solving a DP question involving Catalan Numbers using JavaScript. I was getting the wrong answer for n = 35 (35th Catalan Number). So I decided to code in C++. I wrote similar code in C++ and to my surprise my code passed all test cases. Why am I getting different result for similar code in C++ and JS?
Problem Link : https://www.interviewbit.com/problems/intersecting-chords-in-a-circle/
JS Code(Rhino 1.7.7)
var arr = new Array(36);
arr[0] = 1;
arr[1] = 1;
arr[2] = 2;
for(var i = 3; i <= 35; i++) {
arr[i] = 0;
for(var j = 0; j < i; j++) {
arr[i] += arr[j] * arr[i-j-1];
arr[i] = arr[i] % 1000000007;
}
}
print(arr[35]);
C++
int main() {
long int arr[36];
arr[0] = 1;
arr[1] = 1;
arr[2] = 2;
for(int i = 3; i <= 35; i++) {
arr[i] = 0;
for(int j = 0; j < i; j++) {
arr[i] += arr[j] * arr[i-j-1];
arr[i] = arr[i] % 1000000007;
}
}
cout<<arr[35];
return 0;
}
For input : 35;
Expected Output : 93302951;
Output in JavaScript: 93302952;
Output in C++: 93302951;