Project Euler problem 18

来源:互联网 发布:java实现加法运算 编辑:程序博客网 时间:2024/05/22 13:49

简单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 100000007using 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;}


原创粉丝点击