#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 對於每乙個索引,我...