POJ 1163 The Triangle【DP】递归和递推
发布日期:2021-07-27 19:48:16
浏览次数:4
分类:技术文章
本文共 1974 字,大约阅读时间需要 6 分钟。
73 88 1 02 7 4 44 5 2 6 5(Figure 1)Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99. Output Your program is to write to standard output. The highest sum is written as an integer. Sample Input573 88 1 0 2 7 4 44 5 2 6 5
Sample Output
30
大体思路:
这大概是最简单的DP题了把,其实直接用递归暴力解也能算出答案,但多出了太多没有必要的重复计算。所以需要DP来简化操作 而简化操作则分为两个方法,分别对应递归和递推
递归代码:
#include#include #include #include using namespace std;int a[100][100];int maxsum[100][100];//简化计算部分,将计算过的每次结果进行记录,从而减少计算量int Dp(int i,int j,int n){ if(i==n-1) return a[i][j]; if(maxsum[i][j]==-1) maxsum[i][j]=a[i][j]+max(Dp(i+1,j,n),Dp(i+1,j+1,n)); return maxsum[i][j];}int main(){ //freopen("in.txt","r",stdin); int n; while(cin>>n) { memset(maxsum,-1,sizeof(maxsum)); for(int i=0;i >a[i][j]; cout< <
递推代码:
与递归不同,递归的想法是从最底层进行计算,每层的最优结果放在一个一维数组里。得出最后的结果。
#include#include #include #include using namespace std;int main(){ int n,a[100][100]; while(cin>>n) { for(int i=0;i >a[i][j]; int maxsum[100];//滚动数组,记录最有结果, for(int i=n-1;i>=0;--i){ for(int j=0;j<=i;++j){ if(i==n-1) maxsum[j]=a[i][j]; else maxsum[j]=a[i][j]+max(maxsum[j],maxsum[j+1]); }//覆盖掉上一次的计算结果,因为没有用了。 } cout< <
转载地址:https://blog.csdn.net/SCaryon/article/details/60151577 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年09月29日 05时59分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JDK下载(百度网盘)
2019-05-27
idea用得溜,代码才能码得快
2019-05-27
一篇掌握python魔法方法详解
2019-05-27
数据结构和算法5-非线性-树
2019-05-27
数据结构和算法6-非线性-图
2019-05-27
数据结构和算法7-搜索
2019-05-27
数据结构和算法8-排序
2019-05-27
windows缺少dll解决办法
2019-05-27
JPA多条件动态查询
2019-05-27
JPA自定义sql
2019-05-27
BigDecimal正确使用了吗?
2019-05-27
joplin笔记
2019-05-27
JNDI+springmvc使用
2019-05-27
vue+springboot分页交互
2019-05-27
vue+springboot打包发布
2019-05-27
[离散时间信号处理学习笔记] 13. 重采样
2019-06-06
关于使用用友华表Cell控件按需打印行的方法
2019-06-06
团队冲刺第二阶段-9
2019-06-06
使用泛型来比较数字类型的大小
2019-06-06
Android开发中,那些让您觉得相见恨晚的方法、类或接口
2019-06-06