天天和这些奶牛打交道我也是蛮拼的=-=。。。。。
介绍一下题意吧就是奶牛在打保龄球,球只能在相邻的数字之间碰撞,求最后总得分
简单的dp,难的也不会做=-=
别的不说先上代码。。
#include <iostream>
#include <stdio.h>
#define M 500
#include <cmath>
#include <string.h>
// 47MS
using namespace std;
int map[M][M];
int main()
{
//freopen("in.txt","r",stdin);
int n;
int dp[M][M];
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
scanf("%d",&map[i][j]);
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
if(i==1)
{
dp[i][j]=map[i][j];
continue;
}
if(j==1)
{
dp[i][j]=dp[i-1][j]+map[i][j];
continue;
}
if(j==i)
{
dp[i][j]=dp[i-1][j-1]+map[i][j];
continue;
}
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+map[i][j];
}
}
int res=0;
for(int j=1;j<=n;j++)
{
res=max(dp[n][j],res);
}
printf("%d",res);
return 0;
}
ps:
还有一点要注意就是二维数组不能开的太大了,好像不能还上千,我说怎么总运行失败呢。。