新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
最大子數(shù)組和
1、問(wèn)題描述
成都創(chuàng)新互聯(lián)公司擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的做網(wǎng)站、成都做網(wǎng)站、網(wǎng)站維護(hù)、溫江服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、購(gòu)物商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球超過(guò)千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
在數(shù)組中,有正數(shù),負(fù)數(shù),0,求其最大子數(shù)組和?
算法思想:窮舉的解法,找出所有的子數(shù)組和,利用3層for循環(huán);
去冗余--->貪心算法,將小于0的子數(shù)組直接淘汰,因?yàn)橹耙呀?jīng)保存過(guò)最大子數(shù)組值了;
2、暴力破解
#include//求最大子數(shù)組和,暴力破解法,時(shí)間復(fù)雜度:O(n^3) int maxSubArray(int *a, int n); int maxSubArray(int *a, int n){ int i; int j; int k; int ans = -100000000; for(i = 0; i < n; i++){ for(j = i; j < n; j++){ int sum = 0; for(k = i; k <= j; k++){ sum += a[k]; } if(sum > ans){ ans = sum; } } } return ans; } void main(void){ int a[] = {1, -2, -3, 3, 5, 6, -1}; int count = sizeof(a)/sizeof(int); int maxNumber; maxNumber = maxSubArray(a, count); printf("%d\n", maxNumber); }
結(jié)果截圖
3、貪心算法
#include//最大子數(shù)字和:貪心算法,時(shí)間復(fù)雜度為:O(n) int maxSubArray(int *a, int n); int maxSubArray(int *a, int n){ int i; int ans = -10000000; int sum = 0; for(i = 0; i < n; i++){ sum += a[i]; if(sum > ans){ ans = sum; //保存先前的最大值 } if(sum < 0){ sum = 0; //將一部分和<0的直接刪去 } } return ans; } void main(void){ int a[] = {-1, -2, 3, 6, -6, 3, 3, 2, -3}; int count = sizeof(a)/sizeof(int); int maxNumber; maxNumber = maxSubArray(a, count); printf("%d\n", maxNumber); }
結(jié)果截圖
文章題目:最大子數(shù)組和
網(wǎng)站URL:http://ef60e0e.cn/article/pioghs.html