链接:https://ac.nowcoder.com/acm/problem/206063 来源:牛客网

题目描述 终于...经过你的不懈努力,你和田小琳一起来到了boss之战,但在田小琳与boss决斗之前,你还得想出一个高阶地牢的魔法值收集方案。这个高阶地牢收集魔法值的规则只是在前面的关卡规则上多了一个条件:每次选下一层的房间时,只能从与你当前所选房间相邻的(下一层的)两个房间里选择。 为了最终决斗,你依然要积攒最多的魔法值。你能算出高阶地牢能获得的最大魔法值之和吗?

#include<iostream>
#include<algorithm>
#include<map>
#include<stdio.h>
#include<string>
#include<vector>
#include<set>
#include<math.h>
#include<string.h>
#include<cstring>
#define first x
#define second y
using namespace std;
typedef pair<int,int>PII;
typedef long long LL;
const int N=10000+10;
const int MOD=100000007 ;
int a[510][510],b[510][510];
int main()
{
    int n;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=i; j++)
        {
            cin>>a[i][j];
            a[i][j]+=max(a[i-1][j],a[i-1][j-1]);
        }
    }
    int k=1;
    for(int i=n+1; i<=2*n-1; i++)
    {

        for(int j=1; j<=n-k; j++)
        {
            cin>>a[i][j];
            a[i][j]+=max(a[i-1][j],a[i-1][j+1]);
        }
        k++;
    }

    cout<<a[2*n-1][1]<<endl;
    return 0;
}