POJ 3176 Cow Bowling 动态规划
2017-02-25 17:29
309 查看
用dp[i][j]表示从第i行第j列到最后一排所能取到的最大值
状态转移方程是:
dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + num[i][j];(num[i][j]表示i行j列位置的数字)
记忆化搜索超时了,递推形式才63ms,第一次知道了这两者的差异。原来以为只快一点,现在看来。。。。。。
代码如下:
状态转移方程是:
dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + num[i][j];(num[i][j]表示i行j列位置的数字)
记忆化搜索超时了,递推形式才63ms,第一次知道了这两者的差异。原来以为只快一点,现在看来。。。。。。
代码如下:
#include <map> #include <cmath> #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define MAX_N 500 using namespace std; int main() { //freopen("in.txt", "r", stdin); int N; int num[MAX_N][MAX_N]; scanf("%d", &N); for (int i = 1; i <= N; i++) for (int j = 1; j <= i; j++) scanf("%d", &num[i][j]); int dp[MAX_N][MAX_N]; memset(dp, 0, sizeof(dp)); for (int i = N; i >= 1; i--) for (int j = 1; j <= i; j++) { if (i == N) dp[i][j] = num[i][j]; else dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + num[i][j]; } printf("%d\n", dp[1][1]); return 0; }
相关文章推荐
- POJ 1163 The Triangle & POJ 3176 Cow Bowling(DP动态规划)
- POJ 3176 Cow Bowling 【动态规划】【水题】
- POJ 3176(Cow Bowling )(就是简单的数塔,动态规划)
- POJ 3176 Cow Bowling 动态规划
- POJ3176——Cow Bowling(动态规划)
- 【原】 POJ 3176 Cow Bowling 动态规划 解题报告
- poj 3176 Cow Bowling
- POJ_3176_Cow_Bowling_(数字三角形)_(动态规划)
- poj 3176 Cow Bowling(dp基础)
- poj 3176 Cow Bowling
- POJ 3176-Cow Bowling (简单DP)
- POJ 3176 Cow Bowling (数字三角形DP)
- poj 3176 cow bowling
- POJ 3176 Cow Bowling
- POJ 3176 Cow Bowling (简单dp——数塔问题)
- Cow Bowling(POJ, 3176, 基础dp)
- POJ 3176-Cow Bowling(DP||记忆化搜索)
- POJ 3176 Cow Bowling 保龄球 数塔问题 DP
- POJ 3176 Cow Bowling(基础dp)
- POJ-3176 Cow Bowling