POJ 3176 Cow Bowling 【动态规划】【水题】

来源:互联网 发布:arp mac 编辑:程序博客网 时间:2024/06/11 12:20

题目链接:http://poj.org/problem?id=3176


题目大意:

有一个数字三角形,求数字三角形总和最大的一条路径。输出最大的总和。

题解:

直接dp,初始化,状态转移方程为 

dp[0][0] = num[0][0];dp[i][j] = max(dp[i-1][j-1]+num[i][j], dp[i][j-1]+num[i][j]);

剩下的就很水了,附代码:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int size = 355;int n;int num[size][size];int dp[size][size];// dp[i][j] 表示 数字三角形中第 i 行第 j 列所可能的最大值 int main() {memset(dp, 0, sizeof(dp));scanf("%d", &n);for ( int i = 0; i < n; i++ ) {for ( int j = 0; j <= i; j++ ) scanf("%d", &num[i][j]);}dp[0][0] = num[0][0];for ( int i = 0; i < n; i++ ) {for ( int j = 0; j <= i; j++ ) {dp[i][j] = max(dp[i-1][j-1]+num[i][j], dp[i-1][j]+num[i][j]);}} int ans = -1;for ( int i = 0; i < n; i++ ) {ans = max(ans, dp[n-1][i]);}printf("%d\n", ans);return 0;}


0 0
原创粉丝点击