现在的位置: 首页 > 综合 > 正文

Project Euler problem 18

2014年02月01日 ⁄ 综合 ⁄ 共 554字 ⁄ 字号 评论关闭

简单DP嘛。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <cmath>
#include <map>
#include <ctime>
#define MAXN 111111
#define INF 100000007
using namespace std;
int a[22][22];
int dp[22][22];
int main()
{
    for(int i = 1; i <= 15; i++)
        for(int j = 1; j <= i; j++)
            cin >> a[i][j];
    dp[1][1] = a[1][1];
    for(int i = 2; i <= 15; i++)
        for(int j = 1; j <= i; j++)
        {
            if(j > 1) dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + a[i][j]);
            dp[i][j] = max(dp[i][j], dp[i - 1][j] + a[i][j]);
        }
    int ans = 0;
    for(int i = 1; i <= 15; i++)
        ans = max(ans, dp[15][i]);
    cout << ans << endl;
    return 0;
}

抱歉!评论已关闭.