袁安杰

导航

计算与软件工程作业三

这个作业要求在哪里 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454
我在这个课程的目标是 实现求数组中最大子数组的和。
此作业在哪个具体方面帮我实现目标 实现类,测试运行
其他参考文献 https://blog.csdn.net/BillCYJ/article/details/79761039
作业正文 码云:https://gitee.com/yuanaj/yaj1355

正文:

class Solution {
public:
		int maxSubArray(vector<int> &nums) {
	int begin = 0, end = nums.size() - 1;
		return maxArray(nums, begin, end);
	}
	int maxArray(vector<int> &nums, int begin, int end){
		if (begin == end)
			return nums[begin];
		int mid = (begin + end) >> 1;
		int m1 = maxArray(nums, begin, mid);
		int m2 = maxArray(nums, mid + 1, end);
		// 从中向左地寻找最大和
		int i, left = nums[mid], now = nums[mid];
		for (i = mid-1; i >= begin; i--){
			now+= nums[i];
			left = max(now, left);
		}
		int right = nums[mid + 1];
		now = nums[mid + 1];
		for (i = mid+2; i <= end; i++){
			now += nums[i];
			right = max(right, now);
		}
		int m3 = left + right;
		return max(m1, max(m2, m3));
	}
	int maxSubArray(vector<int> &nums) {
			int result = nums[0], sum = nums[0];
		int len = nums.size();
		for (int i = 1; i < len; i++){
			if (sum > 0)
				sum += nums[i];
			else
				sum = nums[i];
			if (result < sum)
				result = sum;
		}
		return result;
	}
};

image.png

码云:https://gitee.com/yuanaj/yaj1355

在信息与计算科学专业前两年的学习经历中,学习了如c++,Java,matlab等项目技能,对我的编程能力有了很大的提升,但是这些技能我都还处于入门阶段,距离登堂入室还有一段距离。还需要在接下来一年多的学习中,增加自己的个人能力,多学多做才能有所进步。

posted on 2020-03-10 14:43  Yajdt  阅读(240)  评论(10编辑  收藏  举报