計算與軟件工程作業三


這個作業要求在哪里 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等項目技能,對我的編程能力有了很大的提升,但是這些技能我都還處於入門階段,距離登堂入室還有一段距離。還需要在接下來一年多的學習中,增加自己的個人能力,多學多做才能有所進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM