[ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 1000+5
int n;
int a[maxn][maxn];
int d[maxn][maxn];
int main(){ for(;cin>>n && n;){
memset(d,,sizeof(d));
int i,j; for(i=;i<=n;i++){ //输入
for(j=;j<=i;j++){
cin>>a[i][j];
}
} for(j=;j<=n;j++){ //计算最底层d[][]值
d[n][j]=a[n][j];
} for(i=n-;i>=;i--){ //从下向上计算d[][]值
for(j=;j<=i;j++){
d[i][j]=a[i][j]+max(d[i+][j],d[i+][j+]);
}
}
cout<<d[][]<<'\n';
}
}
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 1000+5
int n;
int a[maxn][maxn];
int d[maxn][maxn];
int D(int i,int j){
if(d[i][j]>=)return d[i][j];
return d[i][j]=a[i][j]+(i==n ? : max(D(i+,j),D(i+,j+))); //记忆化搜索要保存每次计算结果
}
int main(){ for(;cin>>n && n;){
memset(d,-,sizeof(d)); //初始化为-1,也是为记忆化搜索做的标记,当>=0时直接返回d[][];
int i,j; for(i=;i<=n;i++){
for(j=;j<=i;j++){
cin>>a[i][j];
}
}
cout<<D(,)<<'\n';
}
}
[ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索的更多相关文章
- 动态规划——数字三角形(递归or递推or记忆化搜索)
动态规划的核心就是状态和状态转移方程. 对于该题,需要用抽象的方法思考,把当前的位置(i,j)看成一个状态,然后定义状态的指标函数d(i,j)为从格子出发时能得到的最大和(包括格子本身的值). 在这个 ...
- [ACM_动态规划] 数字三角形(数塔)
递归方法解决数塔问题 状态转移方程:d[i][j]=a[i][j]+max{d[i+1][j],d[i+1][j+1]} 注意:1\d[i][j]表示从i,j出发的最大总和;2\变界值设为0;3\递归 ...
- 洛谷 P1464 Function【动态规划(递推)/记忆化搜索(递归)】
题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,2 ...
- 数字三角形/数塔问题(DP入门题)
有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大. 样例输入: 5 13 11 8 12 7 26 6 14 15 8 12 7 ...
- 题解报告:hdu 2084 数塔(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...
- [bzoj1925][Sdoi2010]地精部落_递推_动态规划
地精部落 bzoj-1925 Sdoi-2010 题目大意:给你一个数n和模数p,求1~n的排列中满足每一个数的旁边两个数,要么一个是边界,要么都比它大,要么都比它小(波浪排列个数) 注释:$1\le ...
- [bzoj1002][FJOI2007]轮状病毒_递推_高精度
轮状病毒 bzoj-1002 FJOI-2007 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2 ...
- [LuoguP2151][SDOI2009]HH去散步_递推_矩阵乘法_图论
HH去散步 题目链接:https://www.luogu.org/problem/P2151 数据范围:略. 题解: 数据范围好小,让人不禁想用一些毒瘤算法,但是失败了. 这种类似时间啊这种有点重复味 ...
- DFS——>记忆化搜索——>动态规划
以洛谷P1802 5倍经验日 为例 https://www.luogu.org/problem/show?pid=1802 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却 ...
随机推荐
- 不一样的角度 解读微信小程序
不一样的角度 解读微信小程序 七月在夏天· 2 天前 前段时间看完了雨果奖中短篇获奖小说<北京折叠>.很有意思的是,张小龙最近也要把应用折叠到微信里,这些应用被他称为:小程序. 含着金钥匙 ...
- java面试中问题
HashMap数据结构 http://blog.csdn.net/weiyouyin/article/details/5693496 HashMap冲突 http://www.blogjava.net ...
- Apache 网站301重定向
1. Apache模块 开启rewrite 2..htaccess文件中 <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteE ...
- iOS常用公共方法
iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...
- wait() notify()搭配synchronize的使用
一直以为自己动多线程,使用过好像就懂了原理一样,其实是按部就班的写自己不知道原理的代码而已. 一些概念: 监视器:将监视器比作一个建筑,建筑里面有个特别的房间,房间中有一些数据,这些数据在同一个时间只 ...
- iOS 清除web cookies
NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; ...
- 解决Ubuntu下Chrome浏览器网页中文字体混乱
在Ubuntu下使用Chrome浏览器时碰到了网页中文字体混乱的现象: 黑体和楷体混杂,看起来非常不美观. 这是由于许多网页并没有指定字体,然后浏览器将调用系统默认字体配置. 首先,安装文泉驿字体: ...
- 【转载】为什么V8引擎这么快?
原文地址:http://blog.csdn.net/horkychen/article/details/7761199
- 查看上下文切换的多的进程(find which process take the most context switch)
这是原文链接http://serverfault.com/questions/190049/find-out-which-task-is-generating-a-lot-of-context-swi ...
- maven清除不同版本的重复依赖
pom文件加入: <dependencyManagement> <dependencies> <dependency> <groupId>org.spr ...