您的位置:首页 > 其它

POJ3176-Cow Bowling

2016-04-17 17:03 197 查看
这么多天对DP还是研究的不够透彻,DP入门第一题。

初始条件为dp[0][0]=tip的值,其余dp[i][j]取决于dp[i-1][j]和dp[i-1][j-1]和本身dp[i][j]的值。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int MAXN = 350;
int bowl[MAXN+5][MAXN+5];
int dp[MAXN+5][MAXN+5];

int main()
{
int n;
scanf("%d", &n);

memset(bowl, -1, sizeof(dp));

for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
scanf("%d", &bowl[i][j]);
}
}

dp[0][0] = bowl[0][0];
for (int i = 1; i < n; i++) {
for (int j = 0; j <= i; j++) {
if (j - 1 < 0) {
dp[i][j] = max(dp[i-1][j]+bowl[i][j], dp[i][j]);
}
else
dp[i][j] = max(max(dp[i-1][j], dp[i-1][j-1])+bowl[i][j], dp[i][j]);
}
}

int ans = 0;
for (int i = 0; i < n; i++) {
ans = max(ans, dp[n-1][i]);
}

printf("%d\n", ans);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: