【DP】HIHO 1078
2016-04-15 21:20
232 查看
HIHO #1037 : 数字三角形
题意:中文题就不说了。
思路:提示也很清楚,就这里贴一下代码。注意边界情况。
dp[i][j] = max(dp[i-1][j],dp[i-1][j-1])+maps[i][j]
(maps[i][j]为坐标i,j房间奖券钱目)
题意:中文题就不说了。
思路:提示也很清楚,就这里贴一下代码。注意边界情况。
dp[i][j] = max(dp[i-1][j],dp[i-1][j-1])+maps[i][j]
(maps[i][j]为坐标i,j房间奖券钱目)
/** sample input 5 2 6 4 1 2 8 4 0 9 6 6 5 5 3 6 sample output 28 **/ #include <cstdio> #include <cstring> #include <utility> #include <algorithm> using namespace std; const int maxn = 505; int n; int dp[maxn][maxn]; int maps[maxn][maxn]; int main() { while(~scanf("%d",&n)){ for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ scanf("%d",&maps[i][j]); } } int res = 0 ; for(int i=2;i<=n;i++){ dp[i][1] = dp[i-1][1]+maps[i][1];//仅有一层的情况 for(int j=2;j<i;j++){ dp[i][j] = max(dp[i-1][j-1],dp[i-1][j])+maps[i][j]; } dp[i][i] = dp[i-1][i-1]+maps[i][i];//处理到一层最后一个房间的情况 for(int k=1;k<=i;k++){ res = max(res,dp[i][k]); } } printf("%d\n",res+maps[1][1]);//别忘记加上第一个房间的奖券钱数 } return 0; }
相关文章推荐
- [android]ShareSDK——内容分享和短信验证
- [原创]Cef3 2623.1397 开启ppapi flash插件
- HTML5 localStorage图书阅读器实例
- 剑指offer 面试题19:二叉树的镜像(leetcode226. Invert Binary Tree) 题解
- poj 3255 Roadblocks
- 常用 Git 命令清单
- match()方法与正则子表达式
- javascript中面向对象的三大作用
- Recursive PLS algorithms for adaptive的简单介绍
- 文件分割器,一个读取流,相应多个输出流,并且生成的碎片文件都有有序的编号
- Skinned Mesh 原理解析和一个最简单的实现示例
- 判断出栈顺序的合法性(面试题)
- Android:密码显示隐藏
- HDU 1166 敌兵布阵
- showPopupWindow 类似微信+
- XCode升级导致的IAP失败的问题
- 首尾相接的数组的子数组的最大值
- 凸包。
- 消息队列
- ARC无效时block的赋值