hdu 1208 Pascal's Travels

来源:互联网 发布:51单片机c语言教程全集 编辑:程序博客网 时间:2024/06/05 19:00
/*记忆化搜索题意:左上角移动到右下角的路径有几条,每个位置上的数代表要走的步数,只能向右或向下移动  */#include<iostream>using namespace std;__int64 dp[36][36], map[36][36];int n;__int64 dfs(int x, int y){if(x == n-1 && y == n-1) return 1;if(!dp[x][y]) return 0;if(map[x][y]) return map[x][y];int i;__int64 xx, yy;for( i=0; i < 2; i++){if(i)xx = x, yy = y + dp[x][y];elsexx = x + dp[x][y], yy = y;if(xx >= 0 && xx < n && yy >= 0 && yy < n)map[x][y] += dfs(xx, yy);}return map[x][y];}int main(){while(scanf("%d", &n) != EOF && n != -1){char str[36];int i, j;for( i=0; i < n; i++ ){scanf("%s", str);for( j=0; j < n; j++ )dp[i][j] = str[j] - '0';}memset(map, 0, sizeof(map));__int64 count = dfs(0, 0);printf("%I64d\n", map[0][0]);}return 0;}

原创粉丝点击