博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一次作业——子序列最大和
阅读量:4614 次
发布时间:2019-06-09

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

本次作业,我使用了两种方法,分别为枚举法和动态规划法,下面是源程序和测试结果截图

测试数据1:1 2 -3 4,最大和为4

测试数据2(全为负数):-1 -2 -3 -4 最大和-1

方法一:

代码如下

#include
#include
int main(){ int a[100],i,j,x,sum=0,n,max=-9999; scanf("%d",&n); for(i=0;i
=i;j--) { sum=0; for(x=i;x<=j;x++) sum=sum+a[x]; if (max

 这是一种暴力算法

算法将所有可能的值全部计算,通过与max值相比较

大于max的sum将max赋值为sum

小于max的sum跳过

这种方法的好处是想法简单,但是时间复杂度高,需要长时间来执行。

通过计算,该算法的时间复杂度为O(n^3)

 

考虑到算法1的时间复杂度问题,我又写了第二个算法,该算法使用动态规划的方法进行,时间复杂度低

#include 
int main(){ int dp[100]={0}; int a[100]={0}; int num,max; int i,j,k; scanf("%d",&num); max=-9999; for (i=1;i<=num;i++) { scanf("%d",&a[i]); dp[i]=a[i]+dp[i-1]; if (max

 

 动态规划的时间复杂度经过计算仅为O(n),较之暴力枚举法快了非常多

转载于:https://www.cnblogs.com/mxc1868/p/3335080.html

你可能感兴趣的文章
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
python_封装redis_hash方法
查看>>
Git的安装和使用教程详解
查看>>
lsof命令详解
查看>>
常用模块,异常处理
查看>>
父窗口与子窗口之间的传值
查看>>
eclipse 找不到 tomcat 的解决方案
查看>>
HDU 1890--Robotic Sort(Splay Tree)
查看>>
connection string for Excel/Access 2010
查看>>
【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
查看>>
学习wavenet_vocoder之环境配置
查看>>
常用Maven命令
查看>>
Docker启动mysql的坑2
查看>>
j2ee爬坑行之二 servlet
查看>>
JAVA基础入门(JDK、eclipse下载安装)
查看>>
最基础的applet运用--在applet上画线
查看>>
并不对劲的hdu4777
查看>>
linux使用rz、sz快速上传、下载文件
查看>>