算法第三章上机实践报告
时间:2019-10-20
本文章向大家介绍算法第三章上机实践报告,主要包括算法第三章上机实践报告使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一题:
题目描述:
算法描述:
很显然这道题我们要用动态规划来做。我们需要动态的求出每个往下走能的得到的最大的和。
我们用一个dp【】数组来记录每个位置上能取到的最大的和,数组a【】为这个位置上本身的值。
很显然,从顶点开始(设顶点为1)我们比较与它相连的两个点(设为2,3)的dp【2】,dp【3】取较大那个然后加上它本身a【1】就是答案。
然后用递归的思想,dp【2】就是它的dp【4】,dp【5】中较大的加上它本身。
一直到最后一行的dp【】就是它自己本身a【】。
即状态转移方程为 dp【i】【j】=a【i】【j】+max(dp【i+1,j】,dp【i+1,j+1】)
AC代码:
1 #include <iostream> 2 #include<algorithm> 3 using namespace std; 4 int n,a[101][101],dp[101][101]; 5 int DP(int i,int j){ 6 if(dp[i][j]>0) return dp[i][j];//代码优化,已经计算过的直接返回避免重复计算,降低复杂度 7 return dp[i][j]=a[i][j]+((i==n)?0:max(DP(i+1,j),DP(i+1,j+1))); 8 } 9 int main() { 10 cin>>n; 11 for (int i = 1; i <=n; i++) 12 for(int j=1;j<=i;j++) 13 cin>>a[i][j]; 14 cout<<DP(1,1)<<'\n'; 15 return 0; 16 }
复杂度分析:
因为我代码本身已经优化了,不会重复计算已经算过的dp【】【】值,所以算法时间复杂度为 O(n^2);
二维数组dp【】【】保存每个子问题的解,空间复杂度为O(n^2)
心得体会:
复习了动态规划算法,加强了对动态规划算法的理解和认识,并且上机实践加强了敲代码的能力。
原文地址:https://www.cnblogs.com/1807tangjr/p/11707508.html
- 装载问题-回溯法
- CSS定位之position详解
- 回溯法算法框架
- 手机支付每天限额500块钱?“我刷你”和“你刷我”限额不一样
- 原始UDP封包发送
- Elasticsearch——Rest API中的常用用法
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
- Elasticsearch——多索引的使用
- 路由跟踪技术
- 手把手教你编写Logstash插件
- ping 实现设计---ICMP
- Elasticsearch增删改查 之 —— mget多文档查询
- Elasticsearch 之 数据索引
- AngularJS 国际化——Angular-translate
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C语言中的字符串可以怎么处理?
- 一个简单的C语言测试框架
- Let's Encrypt实践指北
- MassTransit Get Started->
- 一次性把所有普通和经典的网页布局讲得通通透透的,多图预警,建议收藏
- Github标星 8K+,免费又好用的Redis客户端工具!
- Python判断字符串是否包含特定子串的7种方法
- 用后台开发的逻辑理念学习VUE
- 进程管理-Linux每日一练(6)
- AkShare-能源数据-碳排放-国际行情
- Linux 【Shell脚本经典案例】
- 【Vulnhub】SecTalks: BNE0x00 - Minotaur
- Spring Boot扩展机制 - Spring Factories
- Google Analytics上实施透明度和用户意见征求框架
- 浅析鸿蒙 JavaScript GUI 技术栈