Problem 15
Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.
How many such routes are there through a 20×20 grid?
C++:
#includeC++:#include using namespace std;const int MAXN = 20;long grid[MAXN+1][MAXN+1];long pathcount(int row, int col){ long count; if(grid[row][col]) return grid[row][col]; if(row == 0 && col == 0) return 1; else if(row == 0) count = pathcount(row, col - 1); else if(col == 0) count = pathcount(row - 1, col); else count = pathcount(row - 1, col) + pathcount(row, col -1); grid[row][col] = count; return count;}int main(){ int n; memset(grid, 0, sizeof(grid)); while(cin >> n && n <=MAXN) { long ans = pathcount(n, n); cout << ans << endl; } return 0;}
#includeusing namespace std;const int MAXN = 20;long grid[MAXN+1][MAXN+1];int main(){ int n; while(cin >> n && n <=MAXN) { for(int j=0; j<=n; j++) grid[0][j] = 1; for(int i=1; i<=n; i++) { grid[i][0] = 1; for(int j=1; j<=n; j++) grid[i][j] = grid[i][j-1] + grid[i-1][j]; } cout << grid[n][n] << endl; } return 0;}