2016huasacm暑假集训训练五 F - Monkey Banana Problem

时间:2023-03-09 16:44:38
2016huasacm暑假集训训练五  F - Monkey Banana Problem

题目链接:https://vjudge.net/contest/126708#problem/F

题意:求至上而下一条路径的所经过的值得和最大值,这题比赛时就出了 但当时看不懂题目一直没写,这就和数字三角形差不多,只是加上了他的下部分,分上下两种情况就行。

AC代码:

 #include<cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int i,j,n;
long long a[][],f[][],ans;
int main()
{
int t2;
scanf("%d",&t2);
for(int t1 = ; t1 <= t2; t1++)
{
scanf("%d",&n);
for(i = ; i <= *n-; i++)
for(j = ; j <= min(i,*n - i); j++)
{
scanf("%lld",&a[i][j]);
}
memset(f,,sizeof(f));
for(i = ; i <= *n-; i++)
for(j = ; j <= min(i,*n - i); j++)
{
if(i == ) f[i][j] = a[i][j];
if(i<=n)
{
f[i][j] = max(f[i-][j], f[i - ][j - ]) + a[i][j];
}
else
{
f[i][j] = max(f[i-][j], f[i - ][j + ]) + a[i][j];
}
}
printf("Case %d: %lld",t1,f[*n-][]);
putchar('\n'); }
return ;
}