273
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
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)分治法可能会出现重复计算的问题,需要在编程过程中尽量避免。