记忆化搜索入门——数塔
来源:互联网 发布:淘宝客服打电话要好评 编辑:程序博客网 时间:2024/06/17 22:21
数字三角形问题
Time Limit: 1000MS Memory Limit: 65536KB SubmitStatistic Discuss
Problem Description
给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。
![](http://acm.sdut.edu.cn/image/1730.png)
对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。
![](http://acm.sdut.edu.cn/image/1730.png)
对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。
Input
输入数据的第1行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0..99之间。
Output
输出数据只有一个整数,表示计算出的最大值。
Example Input
573 88 1 02 7 4 44 5 2 6 5
Example Output
30
分析:直接搜索的话我们每次都会进行很多次多余的操作,所以我们不妨把每次搜索的结果记录下来,这样就避免了大量的重复计算,节约时间。每次的结果只和上次的状态有关,这样的时候就可以考虑记忆化搜索,也就是动态规划。
#include <bits/stdc++.h>using namespace std;int n;int mp[105][105];int dp[105][105];int ans;int dfs(int s,int e){ if(dp[s][e]) { return dp[s][e]; } if(s>n || e>n) return 0; dp[s][e]=max(dfs(s+1,e),dfs(s+1,e+1))+mp[s][e]; return dp[s][e];}int main(){ cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) { scanf("%d",&mp[i][j]); } cout<<dfs(1,1); return 0;}
0 0
- 记忆化搜索入门——数塔
- hdu2084 数塔 记忆化搜索水题
- JZOJ 4.8 2016——最小步数【记忆化搜索】
- HDU1937How many ways(记忆化搜索)入门
- POJ Railroad ——记忆化搜索
- LA3516——dp,记忆化搜索
- 记忆化搜索——POJ 1351
- 记忆化搜索——ZOJ3352
- 记忆化搜索——POJ 1088
- 记忆化搜索——滑雪
- POJ1088—滑雪 记忆化搜索
- NYOJ—skiing【记忆化搜索】
- HDOJ1078 记忆化搜索入门题 有详细的记忆化搜索模板程序
- bzoj1026 windy数 数位dp 记忆化搜索
- [NOIP2007] 矩阵取数游戏 【记忆化搜索+高精】
- poj1088 dp 记忆化搜索 (入门好题)
- POJ1088 滑雪(记忆化搜索入门级题目)
- POJ1163The Triangle(动态规划记忆化搜索入门精讲)
- Redis的常用命令及高级应用开发
- 从今天开始我也用ubuntu做开发环境了
- 64. Minimum Path Sum
- Linux实验(二)
- 从0开始搭建一个战棋游戏的AI(初级教程)
- 记忆化搜索入门——数塔
- 51Nod 1003 阶乘后面0的数量
- iptables 执行清除命令 iptables -F 要非常小心的
- 压力测试——ApacheBench(AB)测试
- Redis 中文乱码如何解决 Markable先
- 四.SpringMVC中的 拦截器与异常处理
- 相思曲
- 1.Vim -----Coding on the Ubuntu
- 五.SpringMVC 实现文件上传下载、国际化