私は動的計画法を学んでおり、動的計画法を使用してプロジェクトオイラーの問題15を解決しようとしました。二項係数を使用して問題を解決できることは知っていますが、動的計画法をどれだけ学び、試したかを知りたいと思いました。コードは次のとおりです。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
using namespace std;
int main()
{
int gridsize;
cin>>gridsize;
int** grid = new int*[gridsize+1];
for ( int i = 0; i < gridsize+1; i++) {
grid[i] = new int[gridsize+1];
}
//Initialize the grid distances
for ( int i = 1; i <= gridsize ; i++) {
grid[i][0] = 1;
grid[0][i] = 1;
}
grid[0][0] = 0;
for ( int i = 1; i <= gridsize ; i++) {
for ( int j = 1; j <= gridsize ; j++) {
grid[i][j] = grid[i-1][j] + grid[i][j-1];
}
}
cout<<grid[gridsize][gridsize]<<endl;
delete(grid);
return 0;
}
期待される答えは137846528820ですが、私が得ている答えは407575348です。