博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法第3章上机实践报告
阅读量:5255 次
发布时间:2019-06-14

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

一、实践题目

数字三角形

 

二、问题描述

计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 

 

三、算法描述

描述:自底向上的将两行相加之和最大的数储存在数组中,最后dp[1][1]即为所求。

核心算法:dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j];

代码实现:

#include<iostream>

using namespace std;
int n;
int dp[109][109];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
cin>>dp[i][j];
}
for(int i=n-1;i>=0;i--)
for(int j=1;j<=i;j++)
{
dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j];
}
cout<<dp[1][1]<<endl;
return 0;
}

 

四、算法时间及空间复杂度分析

空间复杂度:O(n²) 三角形的值保存在二维数组中

时间复杂度:O(n²) 算法有两个for循环,时间复杂度最大为n²

 

五、心得体会

动态规划最重要的就是递归方程,着重解决这个方程更有利于实现算法。

 

 

转载于:https://www.cnblogs.com/Wqxxxx--/p/9943509.html

你可能感兴趣的文章
sqlserver、mysql、oracle各自的默认端口号
查看>>
各种ORM框架一站式代码下载
查看>>
HTTP状态码详解
查看>>
Activity生命周期以及启动模式对生命周期的影响(二)
查看>>
MailHelper
查看>>
Android注解使用之ButterKnife 8.0注解使用介绍
查看>>
INotitypropertyChanged
查看>>
WPF数据绑定
查看>>
JEECMS的几个细节
查看>>
C# 当前时间和时间戳互相转换
查看>>
项目从0到1
查看>>
20145322 Exp5 MS11_050
查看>>
box-sizing属性
查看>>
微信小程序——<radio></radio>大小改变
查看>>
private继承如何转换
查看>>
求π【VB代码实现】
查看>>
VNC 登录上去灰屏,没有shell脚本,鼠标变成X
查看>>
jquery选择器demo
查看>>
javascript 函数和作用域(函数,this)(六)
查看>>
前台JSP页面独立化
查看>>