计算机算法设计与分析第二章作业

m0_61490983 m0_61490983 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
  1. 请以伪代码描述最大字段和的分治算法

    1. 问题描述

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

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

    2. 问题分析

      通过分治的思想,可以不断把数组a[1:n]从中间平均分成两个部分:a[1:mid]和a[mid+1: n]两个部分,这样最大字段和出现的位置就会分成三种情况:

      • 最大子段和在左半段
      • 最大子段和在右半段
      • 最大子段和在中间段

      最大子段在左半端与右半端的通过不断递归相加求得,中间通过分别求两边再相加得出,最后再进行比较返回最大的子段和。

    3. 算法实现
    #include<iostream>
    using namespace std;
    int a[10000];
    int MaxSum(int *a, int left, int right)
    {
        int sum = 0, MidSum = 0,LeftSum = 0, RightSum=0;
        int center, s1, s2, lefts, rights;
        if(left == right)
            sum = a[left];
        else{
            center = (left + right)/2;
            LeftSum = MaxSum(a, left, center);       
            RightSum = MaxSum(a, center+1, right);    
            s1 = 0;
            lefts = 0;                          
            for(int i = center;i >= left;i--)          
            {
                lefts += a[i];
                if(lefts > s1) s1 = lefts;
            }
            s2=0;
            rights=0;
            for(int j = center+1;j <= right;j++)   
            {
                rights += a[j];
                if(rights > s2)
                    s2 = rights;
            }
            MidSum = s1+s2;              
            if(MidSum < LeftSum)
                sum = LeftSum;
            else
                sum = MidSum;
            if(sum < RightSum)
                sum = RightSum;   
        }
    
        return sum;
    }
    int main(void)
    {
        int n,j;
        cin>> n;
        for(j = 0;j < n;j++)
            cin>> a[j];
        cout<< MaxSum(a,0,n-1);
        return 0;
    }
    
  2. 该算法的时间复杂度

    划分子问题:O(1)

    求解子问题:2T(n/2)

    合并子问题:O(n)

    所以T(n) = 2T(n/2)+O(1)+O(n)

    所以该算法的时间复杂度为T(n) = O(nlogn)

  3. 分治法的体会与思考

    ​ 分治算法的核心思想可以归结为四个字:分而治之。分治法将规模为n的问题不断缩减,划分子问题,分成k个规模为n/m的我们比较容易能解决的子问题,这些子问题相互独立且与原问题性质相同,最后求出的小规模问题的解合并为更大规模的解,自底向上逐步合并求出原问题的解。

...全文

相关推荐

计算机算法设计与分析.pdf

计算机算法设计与分析.pdf

初来小鬼

计算机算法与程序设计(python)-计算机PPT模板.pptx

计算机算法与程序设计(python)_计算机 演讲人 202x-11-11 202x 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第1页。 第一章绪论(4学时) 01 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第2页。 第一章绪论(4学时) 1.1课程简介 01 1.2raptor流程图 02 1.3python简介及编程 03 1.42019年-学生的特色作品1 04 1.42019年-学生的特色作品2 05 1.52020年-学生特色作品-爬虫,机器学习与神经网络 06 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第3页。 第一章绪论(4学时) 1.52020年-学生特色作品-游戏 1.52020年-学生特色作品-其他 第一章测验 第一章编程作业 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第4页。 第二章穷举搜索问题(2学时) 02 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第5页。 第二章穷举搜索问题(2学时) M.94275.CN 2.2穷举搜索 02 第二章测验 05 2.1故事:案件回顾 01 2.4穷举搜索操作与编程实现 04 2.3故事:寻找billy 03 第二章编程作业 06 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第6页。 第三章字符串与数组(2学时) 03 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第7页。 3.1数组 3.2字符串 第三章测验 第三章编程作业 第三章字符串与数组(2学时) 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第8页。 第四章二分搜索与递归(4学时) 04 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第9页。 4.1二分搜索 4.2递归 4.3圆二分搜索 第四章测验 第四章编程作业(更正) 第四章二分搜索与递归(4学时) 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第10页。 第五章广度优先搜索与队列 05 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第11页。 第五章广度优先搜索与队列 5.1广度优先搜索 5.2队列与广度优先搜索求最短路径的实现 第五章测试 第五章编程作业 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第12页。 第六章深度优先搜索与栈 06 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第13页。 第六章深度优先搜索与栈 6.1深度优先搜索与栈 6.2栈与队列 第六章测验 第六章编程作业 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第14页。 第七章并行算法,迭代加深与逆向索引 07 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第15页。 7.1并行算法 01 06 第七章测验 03 7.4作业提示 7.3逆向索引 第七章编程作业 02 7.2迭代加深 04 05 第七章并行算法,迭代加深与逆向索引 单击此处添加文本具体内容,简明扼要的阐述您的观点。根据需要可酌情增减文字,以便观者准确的理解您传达的思想。 单击此处添加标题 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第16页。 第八章二叉搜索树 08 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第17页。 第八章二叉搜索树 01 8.1二叉搜索树的定义与查找 02 8.2二叉搜索树的实现 03 8.3有序数组构造二叉搜索树 04 8.4二叉搜索树的区间查找 05 8.5二叉搜索树的插入 06 8.6trie树 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第18页。 第八章二叉搜索树 第八章测验 第八章编程作业 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第19页。 第九章最佳搜索与堆 09 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第20页。 第九章最佳搜索与堆 M.94275.CN 9.1最佳搜索 9.2优先队列 9.3堆 第九章测验 9.5总结 9.4大结局 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第21页。 第九章最佳搜索与堆 第九章编程作业 计算机算法与程序设计(python)-计算机PPT模板全文共34页,当前为第22页。 第二部分高级应用1 10 计算机算法与程序

小虾仁芜湖

计算机算法-设计与分析导论 巴斯著 课后答案(英文版)

呵呵,大家是不是找了好久了,我是从同学那里得到的,如果有需要中文版答案的,加我QQ 872286990.这个不外传的,私人答案

妹妹

华师大出版《算法与程序设计》解析算法课件

华东师范大学出版社《算法与程序设计》(选学模块)(试用本)第二章基本算法实例课件

pudong000

高中数学第二章算法初步2.2.2变量与赋值课时作业(含解析)北师大版必修3.doc

高中数学第二章算法初步2.2.2变量与赋值课时作业(含解析)北师大版必修3.doc

平头哥在等你
评论
收藏 已收藏
分享
返回顶部
m0_61490983
gdufscs 434 成员 1,011 内容