【160326 18:00】最大子序列之和 1

本文详细解析了一道动态规划问题,目标是在给定数组中找到最大子序列和,时间复杂度要求为O(n)。文章通过实例演示了如何应用动态规划的核心思想,包括阶段划分、最优状态、最优子结构性质和无后效性质,最终提供了Python代码实现。此外,文章还介绍了评分标准,涵盖代码质量、算法效率和代码规范等方面。

此篇讲的是截止时间至 3 月 26 日 18:00 的最大子序列之和 1 之小结。相应的题目,可以见王建民老师的博客中第一题:

http://www.cnblogs.com/wangjm1975/p/5411663.html

问题简析

这是一个最优化问题,并且要求时间复杂度为 \(O(n)\)。这样一来,首先想到的应该是动态规划思想。

动态规划是求解最优化问题的一种思想。

动态规划的核心,是要寻找一种看待问题的方式:这种角度以某种方式将原问题划分为有限的若干阶段;每个阶段可以有若干状态,但只有一个最优状态;当前阶段的最优状态,可以用某种确定的方式,从过去某些阶段的某些状态直接得到;这种方式,只与这些阶段的状态有关,而与这些状态是如何得到的无关。这样一来,如果我们能够在某个阶段找到确定的最优状态,就能够逐层递推,找到原问题的最优解。

在这里:

  • 有限的阶段,即是子问题;
  • 当前阶段的最优状态,即是局部最优解;
  • 当前阶段的最优状态,可以用某种确定的方式,从过去某些阶段的某些状态直接得到,即是最优子结构性质;
  • 这种方式,只与这些阶段的状态有关,而与这些状态是如何得到的无关,即是无后效性质。

也就是说,动态规划的核心,是要寻找一种具有最优子结构的无后效的问题拆解方式。

以下是用 Python 简写的本题参考:

def maxSubArraySum (nums):
    if not nums:
        return None
    elif 1 == len (nums):
        return nums[0]

    local_max, global_max = nums[0], nums[0]

    for i in xrange (1, len (nums)):
        local_max  = max (local_max + nums[i], nums[i])
        global_max = max (local_max, global_max)

    return global_max

if __name__ == '__main__':
    test_cases = [[], [0], [1], [1, 2, 3], [-3, -1, -2],
                  [9, 8, 5, 2, -5, 6, 2, -2]]
    for nums in test_cases:
        print "The maxSubArraySum of", nums, "is", maxSubArraySum (nums)

评分标准

这次作业满分 10 分,采取扣分制与体验分相结合的方式。具体来说:

  • 每见到一处问题/缺陷,扣除该类问题/缺陷相应的分数;
  • 与此同时,还会有 \(\pm 1\) 分的体验分浮动:博文结构清晰、排版整洁、代码清爽等情况酌情加分,反之扣分。

10 分

  • 作业迟交超过 24 小时
  • 未能完成任务

5 分

  • 没有提交代码(至少核心代码)

2 分

  • 作业迟交,但未超过 24 小时
  • 博文代码没有使用「代码模式」编辑(这很重要,已经是第五次作业了,因此提升权重,望引起重视)
  • 博文中,非代码内容使用了「代码模式」编辑(这很重要,已经是第五次作业了,因此提升权重,望引起重视)
  • 程序没有正确计算最大子数组的和
  • 算法的时间复杂度超过 \(O(n)\)

1.5 分

  • 没有阐述设计思想
  • 没有总结分析;或总结中没有实际内容:对本次编程的分析或遇到的问题和解决方法

1 分

  • 没有运行结果截图
  • 输出错误的结果
  • 没有对平凡(trivial)的情况进行处理:如果输入数组为空怎么办?

每项 1 -- 3 分

  • 额外的问题(见博文后的回复说明)

评分结果

学号截至上次作业得分小计160326 18:00小计
2012295123730
2013289724933
20132900116.517.5
20132902266.532.5
2013290730838
20132917327.539.5
20132922287.535.5
2013292720.5626.5
2013293524.5933.5
2013296720828
2013297022.5022.5
2013298429736
2013298527.55.533
2013300524.5529.5
20133009255.530.5
2013301227.5532.5
2013301414519
2013301819322
2013303929.52.532
2013304026.51.528
2013304521829
20133048281.529.5
2013305124.5832.5
20133054312.533.5
2013305717.5623.5
2013305919.57.527
20133062124.516.5
2013306424.5630.5
2013307025631
2013307526632
2013307829736
2013308124.56.531
2013308724.55.530
2013310028836
201328996.53.510
2013290195.514.5
2013290322.5931.5
2013291028.5937.5
20132912327.539.5
2013291931940
2013292432941
2013295830838
20132959307.537.5
20132965286.534.5
20132971266.532.5
2013298028735
2013300428.55.534
2013300822.5527.5
201330108.52.511
2013301319827
20133017216.527.5
2013301929635
20133024249.533.5
20133027249.533.5
20133031185.523.5
2013304217.5522.5
20133043505
201330444.504.5
2013304715116
20133056243.527.5
2013305825.5833.5
20133063215.526.5
2013306621.5021.5
2013307314.58.523
20133077245.529.5
20133079245.529.5
2013308810.5010.5
2013309321.5425.5
2013309917421
2013310125833

其他问题

如果有同学认为自己的作业,评分与预期有差;或者有新的补充。
那么建议你通过博客园站内短消息的方式联系我,或者在你的作业后回帖留言(记得 @ 我)。
你也可以在这篇博文下直接回复。不过不推荐你这样做……

软件工程的意义

欢迎参看下面的文章:
http://www.cnblogs.com/ChenMeng0518/p/5460435.html

转载于:https://www.cnblogs.com/ChenMeng0518/p/5472646.html

【SCI一区复现】基于配电网韧性提升的应急移动电源预配置和动态调度(下)—MPS动态调度(Matlab代码实现)内容概要:本文档围绕“基于配电网韧性提升的应急移动电源预配置和动态调度”主题,重点介绍MPS(Mobile Power Sources)动态调度的Matlab代码实现,是SCI一区论文复现的技术资料。内容涵盖在灾害或故障等极端场景下,如何通过优化算法对应急移动电源进行科学调度,以提升配电网在突发事件中的恢复能力与供电可靠性。文档强调采用先进的智能优化算法进行建模求解,并结合IEEE标准测试系统(如IEEE33节点)进行仿真验证,具有较强的学术前沿性和工程应用价值。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电力系统优化、配电网韧性、应急电源调度等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现高水平期刊(SCI一区、IEEE顶刊)中关于配电网韧性与移动电源调度的研究成果;②支撑科研项目中的模型构建与算法开发,提升配电网在故障后的快速恢复能力;③为电力系统应急调度策略提供仿真工具与技术参考。; 阅读建议:建议结合前篇“MPS预配置”内容系统学习,重点关注动态调度模型的数学建模、目标函数设计与Matlab代码实现细节,建议配合YALMIP等优化工具包进行仿真实验,并参考文中提供的网盘资源获取完整代码与数据。
一款AI短视频生成工具,只需输入一句产品卖点或内容主题,软件便能自动生成脚本、配音、字幕和特效,并在30秒内渲染出成片。 支持批量自动剪辑,能够实现无人值守的循环生产。 一键生成产品营销与泛内容短视频,AI批量自动剪辑,高颜值跨平台桌面端工具。 AI视频生成工具是一个桌面端应用,旨在通过AI技术简化短视频的制作流程。用户可以通过简单的提示词文本+视频分镜素材,快速且自动的剪辑出高质量的产品营销和泛内容短视频。该项目集成了AI驱动的文案生成、语音合成、视频剪辑、字幕特效等功能,旨在为用户提供开箱即用的短视频制作体验。 核心功能 AI驱动:集成了最新的AI技术,提升视频制作效率和质量 文案生成:基于提示词生成高质量的短视频文案 自动剪辑:支持多种视频格式,自动化批量处理视频剪辑任务 语音合成:将生成的文案转换为自然流畅的语音 字幕特效:自动添加字幕和特效,提升视频质量 批量处理:支持批量任务,按预设自动持续合成视频 多语言支持:支持中文、英文等多种语言,满足不同用户需求 开箱即用:无需复杂配置,用户可以快速上手 持续更新:定期发布新版本,修复bug并添加新功能 安全可靠:完全本地本地化运行,确保用户数据安全 用户友好:简洁直观的用户界面,易于操作 多平台支持:支持Windows、macOS和Linux等多个操作系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值