博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2084 数塔
阅读量:5264 次
发布时间:2019-06-14

本文共 1036 字,大约阅读时间需要 3 分钟。

题目:

http://acm.hdu.edu.cn/showproblem.php?pid=2084

这题如果从上往下递推就要分两种情况写递推式:

if(i-j>=1)

dp[i][j]=max(dp[i-1][j]+dp[i-1][j+1])+当前[i][j]的值

else

dp[i][j]=dp[i-1][j-1]+当前[i][j]的值

但是如果倒过来考虑,也就是从底部开始往上递推,那么递推式就是:

dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+当前[i][j]的值

这样写就方便多了。

源代码:

1 #include 
2 #include
3 #include
4 using namespace std; 5 int a[105][105],dp[105][105]; 6 int main() 7 { 8 //freopen("in.txt","r",stdin); 9 // freopen("out.txt","w",stdout);10 int cas;11 scanf("%d",&cas);12 while(cas--){13 int n;14 memset(dp,0,sizeof(dp));15 scanf("%d",&n);16 for(int i=1;i<=n;i++)17 for(int j=1;j<=i;j++){18 scanf("%d",&a[i][j]);19 }20 for(int i=1;i<=n;i++)21 dp[n][i]=a[n][i];22 for(int i=n-1;i>=1;i--)23 for(int j=1;j<=i;j++){24 dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];25 }26 printf("%d\n",dp[1][1]);27 }28 return 0;29 }

 

转载于:https://www.cnblogs.com/xiaoze-yj/p/3252661.html

你可能感兴趣的文章
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
查看>>
Linux环境变量永久设置方法(zsh)
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
脑袋卡在窗子里
查看>>