POJ 1163 The Triangle(DP)

来源:互联网 发布:scrivener mac 编辑:程序博客网 时间:2024/06/09 17:51

数塔水题


代码:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 105;int n, dp[N][N], a[N][N];int dfs(int x, int y) {    if (x == n) return dp[x][y] = a[x][y];    if (dp[x][y] != -1) return dp[x][y];    dp[x][y] = max(dfs(x + 1, y), dfs(x + 1, y + 1)) + a[x][y];    return dp[x][y];}int main() {    while (~scanf("%d", &n)) {for (int i = 1; i <= n; i++) {    for (int j = 1; j <= i; j++)scanf("%d", &a[i][j]);}memset(dp, -1, sizeof(dp));printf("%d\n", dfs(1, 1));    }    return 0;}


0 0