hdu 2084
ps:这道题...是DP题..所以我去看了百度一些东西,才知道了什么是状态方程,状态转移方程..
做的第一个DP题,然后TLE一次。贴上TLE的代码:
#include "stdio.h"
int a[][];
int d(int i,int j,int n){
if(i==n) return a[i][j]+;
if(d(i+,j,n)>d(i+,j+,n)){
return a[i][j]+d(i+,j,n);
}
else{
return a[i][j]+d(i+,j+,n);
}
//return a[i][j]+(i==n?0:d(i+1,j,n)>?d(i+1,j+1,n));
}
int main(){
int i,j,n,C;
scanf("%d",&C);
while(C--){
scanf("%d",&n);
for(i=;i<=n;i++){
for(j=;j<=i;j++){
scanf("%d",&a[i][j]);
}
}
printf("%d\n",d(,,n)); }
return ;
}
因为重复计算得太多,超时了.
后来看了一些大神写的,可以用记忆化搜索..名字就特别有逼格..然后就写了下面这个.
建立一个d数组来存每次计算过的值,就不用重复计算了.
代码:
#include "stdio.h"
#include "string.h"
int a[][];
int d[][];
int dd(int i,int j,int n){
if(i==n) return a[i][j]+;
if(d[i][j]>=) return d[i][j];
if(dd(i+,j,n)>dd(i+,j+,n)){
return d[i][j]=a[i][j]+dd(i+,j,n);
}
else{
return d[i][j]=a[i][j]+dd(i+,j+,n);
}
}
int main(){
int C,i,j,n;
scanf("%d",&C);
while(C--){
scanf("%d",&n);
memset(d,-,sizeof(d));
for(i=;i<=n;i++){
for(j=;j<=i;j++){
scanf("%d",&a[i][j]);
}
}
printf("%d\n",dd(,,n));
}
return ;
}
果然AC了..
哦对了,刚开始做的一个,借用了网上大神的“>?"这个使用,然而在杭电里面无论是GCC还是G++都不支持这个
">?"这个是取两个的最大值,相当于max(a,b) a>?b
hdu 2084的更多相关文章
- HDU 2084 数塔 (DP)
数塔 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pr ...
- HDU 2084 数塔(动态规划)
数塔 http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描 ...
- hdu 2084 数塔 (简单dp)
http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others) Memory L ...
- HDU 2084 数塔(简单DP入门)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU 2084(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=2084 状态转移方程: dp[i][j] = MAX(dp[i+1][j],dp[i+1][j+1])+tower ...
- HDU 2084 DP经典例子---数塔问题
http://acm.hdu.edu.cn/showproblem.php?pid=2084 #include "iostream" #include "cstdio&q ...
- 题解报告:hdu 2084 数塔(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...
- HDU 2084 数塔 (动态规划DP)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目分析:此题采用动态规划自底向上计算,如果我们要知道所走之和最大,那么最后一步肯定是走最后一排 ...
- ACM 杭电HDU 2084 数塔 [解题报告]
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
随机推荐
- javascript弹层组件
组件名称:layui 网址:http://layer.layui.com/ 里面有一个选择日期的组件,在导航的独立组件里,可以用来选择时间.
- 深入理解C++的动态绑定和静态绑定【转】
转自:http://blog.csdn.net/chgaowei/article/details/6427731 为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性 ...
- Spring中处理Post方法中文乱码
在Web.xml中配置: <!-- 注册Spring提供的处理Post请求的乱码问题 --> <filter> <filter-name>CharacterEnco ...
- javascript 去掉空格之后的字符 正则表达式
从后端数据库读取时间时,经常会把整个日期年月日包括时分秒都取到,如2015-1-28 14:56:00,但是一般的我们只需要前面的年月日就行了.一个简单的方法,直接用split(" &quo ...
- 访问google.com
ping www.google.com 得到的IP来访问
- js之oop <四>对象管理
对象扩展管理 Object.isExtensible() 检测对象是否可扩展(一般返回true).Object.preventExtensions() 防止对象扩展. var p = {p1:&quo ...
- Delphi IDE 设置
显示编译进度 Tools/Environment Options
- Deep Learning 9_深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)
前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取颜色特 ...
- centos 安装 mongdb
1.安装MongoDB(安装到/usr/local) wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.2.4.t ...
- ubuntu1404服务器版中设置root用户
刚安装完没有设置root用户 sudo passwd root 根据提示输入密码,ok . 关闭服务器: shutdown -h now