您的位置:首页 > 其它

POJ 3176-Cow Bowling [dp] 《挑战程序设计竞赛》2.3

2017-04-04 23:06 405 查看
题目链接: POJ-Cow Bowling

题目大意:

一个三角矩阵, 比如:

7

3   8

8   1   0

2   7   4   4

4   5   2   6   5


从三角形的顶端往下沿着对角线走,直到走到底部。求这样一条路径经过的点的分数之和的最大值。

, 输入格式:

第一行一个N

接下来N行每行就是三角矩阵的一层

输出格式

最大的分数

题解:

最基础的dp, dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j], 其中a[][]存储原始的三角形矩阵, dp[1][1]就是我们最后要求的答案。

代码:

#include <iostream>
#define MAXN 350
using namespace std;

int dp[MAXN][MAXN];
int a[MAXN][MAXN];
int N;

int main() {
cin >> N;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= i; j++)
cin >> a[i][j];
for (int j = 1; j <= N; j++) dp
[j] = a
[j];
for (int i = N-1; i > 0; i--) {
for (int j = 1; j <= i; j++) {
dp[i][j] = max(dp[i+1][j], dp[i+1][j+1]) + a[i][j];
}
}
cout << dp[1][1] << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poj dp