HDU-2084(简单DP)
数塔
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 40894 Accepted Submission(s): 24282
有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
已经告诉你了,这是个DP的题目,你能AC吗?
有两种思路:从上到下,从下到上
1、从下到上:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 int c,f[105][105]; 7 scanf("%d",&c); 8 while(c--) 9 { 10 int n; 11 scanf("%d",&n); 12 for(int i=0;i<n;i++) 13 { 14 for(int j=0;j<=i;j++) 15 { 16 scanf("%d",&f[i][j]); 17 } 18 } 19 for(int i=n-2;i>=0;i--)//从下往上 20 { 21 for(int j=0;j<=i;j++) 22 { 23 f[i][j]=max(f[i+1][j],f[i+1][j+1])+f[i][j]; 24 } 25 } 26 printf("%d\n",f[0][0]); 27 } 28 return 0; 29 }
2、从上到下:
WA做法:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 int c,f[105][105]; 7 scanf("%d",&c); 8 while(c--) 9 { 10 int n; 11 scanf("%d",&n); 12 for(int i=0;i<n;i++) 13 { 14 for(int j=0;j<=i;j++) 15 { 16 scanf("%d",&f[i][j]); 17 } 18 } 19 for(int i=1;i<n;i++)//从上往下 20 { 21 for(int j=0;j<=i;j++) 22 { 23 f[i][j]=max(f[i-1][j],f[i-1][j-1])+f[i][j];//超出了边界,下标为负 24 } 25 } 26 int m=f[n-1][0];//对最后一行的f值进行扫描,最大的那一个即是结果 27 for(int i=0;i<n;i++) 28 if(f[n-1][i]>m) 29 m=f[n-1][i]; 30 printf("%d\n",m); 31 } 32 return 0; 33 }
所以要限定下标,进行边界处理:
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 int c,f[105][105]; 7 scanf("%d",&c); 8 while(c--) 9 { 10 int n; 11 scanf("%d",&n); 12 for(int i=0;i<n;i++) 13 { 14 for(int j=0;j<=i;j++) 15 { 16 scanf("%d",&f[i][j]); 17 } 18 } 19 for(int i=1;i<n;i++)//从上往下 20 { 21 for(int j=0;j<=i;j++) 22 { 23 if(j==0) 24 f[i][j]=f[i][j]+f[i-1][j]; 25 else if(i==j) 26 f[i][j]=f[i][j]+f[i-1][j-1]; 27 else 28 f[i][j]=max(f[i-1][j],f[i-1][j-1])+f[i][j]; 29 } 30 } 31 int m=f[n-1][0];//对最后一行的f值进行扫描,最大的那一个即是结果 32 for(int i=0;i<n;i++) 33 if(f[n-1][i]>m) 34 m=f[n-1][i]; 35 printf("%d\n",m); 36 } 37 return 0; 38 }
以上的ppt内容引用于nuwp2014暑假集训资料
转载于:https://www.cnblogs.com/2119662736lzj/p/6399714.html
HDU-2084(简单DP)相关推荐
- hdu 5464(简单dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5464 解题思路: 由于p很小,而ai很大,所以先把ai%p,由于ai可能有负数,所以ai=(ai%p+ ...
- hdu 1208(简单dp)
题意:从[1,1]出发到[n,n],每次到达的格子都要按照格子里的数字走.问可以走到终点的数量是多少. 解题思路:简单的递推就可以了... #include<iostream> #incl ...
- hdu 1723(简单dp)
题意:从第1个人把信传到第n个人,每个人最多往后传m个人,问传到第n个人有多少种方案. 解题思路:水题,dp[i]表示传到第i个人有多少种方案,dp[i] += dp[k], i-m <= k ...
- HDU -- 2084 数塔(简单DP)
HDU -- 2084 数塔 题意: 自上而下,选择一条累计和最大的路径 分析: 顶点只与左右两个子节点相关,且子节点路径的选择与顶点无关(无后效性) 状态dp[i][j]:表示(i,j)点向下得到 ...
- HDU 5375 Gray code (简单dp)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5375 题面: Gray code Time Limit: 2000/1000 MS (Java/Ot ...
- hdu 2881(简单dp)
题意:n*n的矩阵,里面有m个格子是有任务要去完成的,t,x,y表示要在第t秒到达(x,y)的格子完成任务,问你最多可以完成多少 解题思路:简单dp,将时间排个序后就是LIS #include< ...
- HDU 1158【简单dp】
题意:给你一个项目,需要几个月来完成买,同时也给你每个月最少需要的工人数.并且告诉你hiring,firing每个工人的钱数,以及每个月应付每个工人的工资.求项目完成时最小花费. 这是个简单dp,思路 ...
- hdu 3016 Man Down(简单线段树简单DP)
Man Down Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU中一些DP的题目分类
DP是难点,供自已以后系统学习. 1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做 ...
- NUC-ACM/ICPC 寒假训练 简单DP A - G题
第一题:数塔 HDU - 2084 做法: 从第 i , j 个 节点往下走的最优解可以由从第 i+1,j 个节点往下走的最优解和第i+1,j+1个节点往下走的最优解得出,二者取其优即可. 代码: 记 ...
最新文章
- 2022-2028年中国数据中台行业深度调研及投资前景预测报告(全卷)
- Android XML pull 解析器
- BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]
- 某马Java架构师实战学习手册
- 写代码前的准备,你做好了吗?
- webservice采用ssl/https传输
- Python生成多个浮点数、二维浮点数
- 5月16日亮相!华硕ZenFone 6新旗舰曝光:无刘海全面屏加持
- jdk下载--操作系统
- 幕墙计算软件_案例BIM在玻璃幕墙参数化设计的应用
- 后台代码调用Application Resources
- 数字IC设计系列----安装配置虚拟机、安装centos系统
- 电容尺寸、封装及PCB库
- 复变函数思维导图梳理
- 开源电子海图和webGIS
- js 56个民族 数据
- 【已解决】兼容多个版本CUDA
- idea代码编辑CPU使用率飙升100%
- 硕盟Type-C智能10合一多功能拓展坞|硕盟Type-C转换器
- 日本单次旅游签 简化材料办理 稳定出签
热门文章
- ppt设置外观样式_这个3000多页的PPT是如何在1小时内做好的?
- genneratorConfig的记录 2021-04-18
- 正在启动python的代码补全客户端_Python交互模式下代码自动补全
- form提交php怎么接收不到,php form表单post提交获取不到数据,而使用get提交能获取到数据 的解决办法...
- 大android 平板,15.6英寸安卓大平板? 阿芙罗S1评测
- servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例
- php现实的九九乘法,php趣味编程 - php 输出九九乘法
- 计算机网关,如何查看计算机的IP地址和网关
- index.php后有乱码后缀,phpExcel在线下wamp环境下,正常导出,同样的代码到线上Linux导出文件无法打开,修改文件后缀为.xls后乱码...
- pythonutf-8是不是二进制_python集合、字符编码、bytes与二进制