您的位置:首页 > 其它

Project Euler Problem 15 Lattice paths

2017-03-22 05:54 411 查看
Lattice paths

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++:

#include <iostream>
#include <cstring>

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;
}

C++:
#include <iostream>

using 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

<< endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: