计算机与软件工程作业3

这个作业要求在哪里 作业要求
我在这个课程的目标是 实现求数组中最大子数组的和
此作业在哪个具体方面帮我实现目标 实现了对代码进行单元测试
其他参考文献 参考文献
作业正文

正文

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;
	}
};

单元测试

博客作业

大一开始接触计算机的学习并学习了MS office和c语言,其中MS office主要是一个办公工具,学起来也比较简单,易操作。通过对c语言的学习,我第一次知道了我们使用的手机软件都是通过一行行的代码实现的,虽然c语言学起来相对较难,但是在学期结束后自己也已经可以编写一些简单的程序了。大二开始学习了Java语言和数据结构,Java语言和c语言都是面向对象语言,都使用了面向对象的思想(封装、继承、多态),不过Java语言中没有指针的概念,不支持多重继承,但Java语言中引入了接口的概念,可以同时实现多个接口,在Java语言的学习中了解了如何做图形界面。通过对数据结构的学习,明白了什么是队列、栈、链表、树、图等,对指针进行了进一步理解。大三学习了数据库、操作系统、ASP.NET,学习了更为复杂的代码编写、数据库的连接以及网站的建立,学习了如何建立一个简单的聊天室网站,了解了什么是三层架构。这两年多虽然学习很多计算机的知识,但是自己并不能将它们很好的联系起来,复杂的代码并不能自己写出来。在大学的前两年学习过c++、java、matlab等程序设计语言,计算机相关课程接触过数据结构、操作系统、asp网页设计、数据库。 基本停留在基础阶段,没有深入的研究,仅能够解决一些小问题。数据结构也仅仅停留在书本知识层面,对于实际应用没有概念。 目前仍在学习中,希望学习matlab等一些模型建立知识,以及尝试学习一些数据挖掘方面的知识。

posted @ 2020-03-12 15:14  prd  阅读(171)  评论(4编辑  收藏  举报