資料結構與演算法分析 學習筆記 最大子串行求和問題

2021-07-10 05:46:13 字數 1256 閱讀 8197

#include

int main()}}

printf("%d",max);

return

0;}

看到這道題。。我首先想到的是2個for遍歷所有可能性。然後繼續看書。。

演算法1

int 

maxsubsequencesum(const

int a,int n)

if(thissum>maxsum)

maxsum=thissum;}}

return maxsum;

}

這才是真正的遍歷了所有可能性,k在i到j之間,算出了所有可能性,時間開銷為o(n^3)

演算法2

int 

maxsubsequencesum(const

int a,int n)

}return maxsum;

}

這個演算法就跟我寫的一樣了

演算法3

int 

maxsum(const a,int left,int right)

maxrightbordersum=0;rightbordersum=0;

for(i=center+1;i<=right;i++)

return max(maxleftsum,maxrightsum,maxleftbordersum+maxrightbordersum);//比較函式

}int

maxsubsequencesum(const

int a,int n)

把數字分成2部分,那麼最大子串行的可能性有3種:

1在左半部分,2在右半部分,3在左右中間,(此時一定包括左半部分的最右數字,右半部分的最左數字

1和2用遞迴,3直接遍歷求

o(nlogn)

演算法4

int 

maxsubsequencesum(const

int a)

return maxsum;

}

這個演算法**了。就用了乙個迴圈

如果thissum不如maxsum,而且thissum是負數,那麼繼續下去沒有意義了,後面及時是正的還得抵消前面負數的值

所以使得thissum歸零重新開始尋找

資料結構與演算法分析 學習筆記 6

排序 插入排序 1 void insertionsort elementtype a,intn 2 12 由於巢狀迴圈每一次花費n次迭代,因此插入排序時間為o n2 逆序 指數組中具有性質ia j 的序偶 a i a j 逆序的個數正好是插入排序執行的交換次數。因為交換兩個不安原序排列的相鄰元素恰好...

資料結構與演算法分析 學習筆記 (4)

雜湊 hash 雜湊是以常數平均時間執行插入,刪除,查詢的技術 需要元素之間比較,排序的資訊,如查詢最大,最小值等等操作不被hash所支援 雜湊表關鍵的是設計雜湊函式,運算簡單並且在單元之間均勻的分配關鍵字,並減少碰撞 1 分離連線雜湊表的型別宣告 2 ifndef hashsep h34 stru...

資料結構與演算法分析 leetcode筆記

深度學習知識及資源分享,學習交流,共同進步 leetcode 820 1 題目 給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。例如,如果這個列表是 time me bell 我們就可以將其表示為 s time bell 和 indexes 0,2,5 對於每乙個索引,我...