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 ...
随机推荐
- Linux+I2C总线分析(主要是probe的方式)
Linux I2C 总线浅析 ㈠ Overview Linux的I2C体系结构分为3个组成部分: ·I2C核心: I2C核心提供了I2C总线驱动和设备驱动的注册.注销方法,I2C通信方法(即“algo ...
- MySQL Workbench 6 不能删除数据等问题(“Error Code: 1175”) 和入门教程
网络资料收集 当用MySQL Workbench进行数据库的批量更新时,执行一个语句会碰到以下错误提示: Error Code: 1175 You are using safe...without a ...
- 17-underscore库(下)
一.函数介绍 1.bind 结构 _.bind(function, object, *arguments) 说明 一个对象中所有的成员函数的this都指向这个对象 举例 _.bind(function ...
- parseInt的源码阅读
parseInt的源码阅读 Integer.parseInt()这个方法的功能小巧又实用,实现起来困难不大,没有很复杂.这里就来看一下Java的源码是怎么写的吧,走一边大婶写过的代码,应该会有点收获吧 ...
- C#:类和结构的区别
第一.引用类型和值类型 类属于引用类型,而结构属于值类型. 结构在赋值时进行复制. 将结构赋值给新变量时,将复制所有数据,并且对新副本所做的任何修改不会更改原始副本的数据. 第二.继承性 类可以继承类 ...
- 让IE7 IE8支持CSS3 background-size属性
简介 CSS3 新增的 background-size 是一个很有用的属性,用于定义背景图片的尺寸,有了这个属性,你就可以任意指定背景图片的大小.其中最常用的值应该要数 cover 了,该值能让背景图 ...
- Nine-Patch图片
Nine-Patch图片以.9.png结尾,用作背景图片时,可使背景随着内容拉伸(缩小)而拉伸(缩小). 如何将普通图片制作为Nine-Patch图片: 在Android sdk目录下有一个tools ...
- 由两点坐标如何画出直线 matlab
由两点坐标如何画出直线 方法1:利用直线方程 斜率加截距 方法2:数据拟合 %由两点坐标得数据拟合直线与画线 x = [,]; y = [,]; k = ((-)/(-));% 由两点坐标得到直线斜 ...
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url ...
- postgresql - 事务
1.事务的使用 begin;//开启关闭自动提交的事务 insert into testtab01 values(0); rollback;//事务回滚 2.SavePoint的使用 begin;// ...