ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法第三章上机实践报告

2021-10-24 13:33:03  阅读:172  来源: 互联网

标签:第三章 上机 子段 int 复杂度 填表 算法 序列


1.题目分析

1.1 问题描述:求给定整数序列的最大子段和

7-1 最大子段和 (25 分)

给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。

要求算法的时间复杂度为O(n)。

输入格式:

输入有两行:

第一行是n值(1<=n<=10000);

第二行是n个整数。

输出格式:

输出最大子段和。

1.2 算法描述

思路描述:

从输入的整数序列的最后一位开始,从后往前,寻找最大的子段和,a[i+1]大于零,则让x[i]加上a[i+1];如果a[i+1]小于零,则将该值舍弃,因为倘若加上会使得a[i]变得比x[i]小,而我们是要求最大值。

代码主体:

#include <iostream>

#include<algorithm>

using namespace std;

int main(int argc, char** argv) {
int n,  max;
int x[1000];

int a[1000];

max = 0;
cin >> n;
a[n] = x[n];//初始化a[n]的值为输入的最后一个序列
for(int i = 1; i <= n; i++)
{
cin >> x[i];
}

for(int i = n - 1; i >= 1; i--)
{
if(a [i+1]> 0)//如果后面的子段序列和大于零,则让a[i] = x[i]+a[i+1]
{
a[i] = x[i]+a[i+1];

}
else//如果后面的子段序列和大于等于零,则直接舍弃
{
a[i] = x[i];
}
max = max(a);//最大子段和
cout << max;
return 0;
}

1.3 问题求解:

1.1.1 根据最优子结构性质,列出递归方程式

           a [i+1]+x[i] ,     a[i+1] > 0

a[i] = 

           x[i],                  a[i+1] <= 0

                                                                                  

1.1.2 给出填表法中表的维度、填表范围和填表顺序。

一个一维表格;填表范围从1到n;从n开始往前填,填到1

1.1.3 分析该算法的时间和空间复杂度

时间复杂度:O(n)

只遍历了一次数组

空间复杂度:O(n)

只利用了两个数组a和x进行数据的记录

1.3 心得体会(对本次实践收获及疑惑进行总结)

收获:对于一些问题,从前往后填表或者从后往前填表都可行。有时也可根据所需的数据判断运用填表思想时是否需要创建表格记录数据,还是只需设置变量记录后续用到的数据而舍弃其它无用的数据。填表问题只需按照步骤走就能解决,分析最优解的性质,并刻画其结构特征,递归的定义最优解,构造递归式子,以自底向上或自顶向下的方式构造问题的最优解

2. 你对动态规划算法的理解和体会

动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。动态规划的核心思想是把原问题分解成子问题进行求解,也就是分治的思想。动态规划算法只需要求出构造递归式子,并根据式子填表就能解决,使问题变得更为简明,降低复杂度,使得解题思路更加清晰。

标签:第三章,上机,子段,int,复杂度,填表,算法,序列
来源: https://www.cnblogs.com/Fisheeee/p/15450768.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有