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

软工2201杨涵宇 2022级 2024-01-12 09:18:43

1. 请以伪代码描述最大字段和的分治算法

#include <iostream>
 
namespace my_namespace {
 
// Constants should be named with uppercase letters and underscores.
const int MAX_COUNT = 100;
 
class MyClass {
 public:
  // Constructor should use member initialization list.
  MyClass(int value) : value_(value) {}
 
  // Method names should be in lowercase with underscores.
  void print_value() const {
    std::cout << "Value: " << value_ << std::endl;
  }
 
 private:
  int value_;
};
 
}  // namespace my_namespace
 
int main() {
  my_namespace::MyClass my_object(42);
  my_object.print_value();
 
  return 0;
}
 

 

2. 分析该算法的时间复杂度

当问题规模为1:T(n)=O(1)
当问题规模大于等于2:T(n)=2T(n/2)+O(n)
由主定理得T(n)=O(nlogn)

3. 结合本章的学习,你对分治法的体会和思考

1)分治法解题,就是把一个大问题分解成若干规模较小的子问题,当子问题划分得足够小的时候解决问题,最后把子问题的解合并构成原问题的解;
2)子问题的划分方式很重要,在编程之前要想好划分子问题的数目和位置,减少时间复杂度;
3)分治法可能会出现重复计算的问题,需要在编程过程中尽量避免。

...全文
76 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

432

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧