POJ-2704(化搜索为简答记忆)(Pascal's Travels )

ll d[100][100];
ll ans[100][100];
int main()
{
	ll n;
	while (cin>>n, n != -1) {
		getchar();
		ll i, j;
		for (i = 1; i <= n; ++i) {
			for (j = 1; j <= n; ++j) {
				char c;
				scanf("%c", &c);
				d[i][j] = c - '0';
			}
			getchar();
		}
		memset(ans, 0 , sizeof(ans));
		ans[1][1] = 1;//很重要
		for (i = 1; i <= n; ++i) {
			for (j = 1; j <= n; ++j) {
				if (d[i][j] == 0) continue;
				if (d[i][j] + i <= n) ans[d[i][j] + i][j] += ans[i][j];
				if (d[i][j] + j <= n) ans[i][d[i][j] + j] += ans[i][j];
			}
		}
		printf("%lld\n", ans[n][n]);
	}
	return 0;
}

你可能感兴趣的:(POJ-2704(化搜索为简答记忆)(Pascal's Travels ))