Time of Update: 2018-12-03
第四章:分治策略。分治策略原理已經在歸併排序中闡述,此處不再重複。 最大子數組問題: 問題:給定一個數組A[1..n],尋找A的和最大的非空連續子數組。例如這個數組,的最大子數組就是A[8..11] 首先是暴力求解方法: 找出所有組合:總共theta(n^2)個組合,而處理每個組合,至少也是常量時間,所以已耗用時間為omega(n^2);注意這裡有重疊子問題,使用dynamic
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
Time of Update: 2018-12-03
本篇文章主要介紹的是遞迴式的求解方法,strassen演算法理論價值高於實際價值。 求解遞迴式的方法有三種:代入法。猜測解的形式,然後用數學歸納法證明;遞迴樹法,這個方法簡單易用;主方法:對於形如:T(n)=aT(n/b)+f(n) (a>=1 ,b>1) 樸素矩陣乘法偽碼:SQUARE-MATRIX-MULTIPLY(A,B) n=A.rows let C be a new matrix for i=1 to n for j=1 to n
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006 題目大意:
Time of Update: 2018-12-03
昨天在學習Matlab的數學函數時,教程中提到模數(mod)與取餘(rem)是不同的,今天在網上具體查了一下:通常模數運算也叫取餘運算,它們返回結果都是餘數.rem和mod唯一的區別在於:
Time of Update: 2018-12-03
4-1-1:返回絕對值最小的負數即:最大的負數4-1-2:BRUTE-FORCE-FIND-MAXSUB(A) max-sum=-INF for i=1 to A.length sum=0; for j=i to A.length sum+=sum[j] if sum>max-sum max-sum-=sum low=i high=jreturn (low,high,max-sum)
Time of Update: 2018-12-03
堆,全稱二元堆積,本質上是一個數組,但可以被看成是一個近似的完全二叉樹,樹上的每個結點對應數組的一個元素,除最底層外,該樹是完全充滿的,而且從左往右填充。 堆,有兩種用途;它在堆排序演算法的設計中產生,後來也可以用於構造優先隊列。堆分類:最大堆 父結點大於等於子結點最小堆 父結點小於等於子結點堆中的幾個屬性: length/capacity,通常表示的是堆的容量, heapsize,表示存放元素的個數;
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006 題目大意:
Time of Update: 2018-12-03
想看更多的解題報告:http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006題目大意:要求出一個完美的平方數,完美的平方數是這樣的,n = bp的當P最大的時候才是一個完美的平方數解題思路:將P從31到1遍曆枚舉,
Time of Update: 2018-12-03
6-1-1:元素個數最少時,高度為h的那一層中,只有一個分葉節點,此時,個數為2^h;當高度為h的那一層中,全部是滿的,此時結點數為2^(h+1)-1;6-1-2:由上題得知:2^h<n<2^(h+1)-1 =>高度為floor( lgn)6-1-3:這個好像不用證明就很明白。。。。6-1-4:必然位於葉結點上6-1-5:對於i,LEFT(i)和RIGHT(i)都大於i所以,A[LEFT(i)]和A[RIGHT(i)]都大於A[i],滿足最小堆的性質6-1-6:
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006 題目大意:
Time of Update: 2018-12-03
想看更多的解題報告:http://blog.csdn.net/wangjian8006/article/details/7870410
Time of Update: 2018-12-03
快速排序是當前使用最多的排序演算法,因為平均情況下,它的時間複雜度為theta(nlgn),且隱藏的常數因子非常小,同時還是原址排序,綜合上述優點,快速排序就成為了排序演算法中最常用的演算法。 其基本思想是仍然是分治, 分解:數組A[p..r]被劃分為兩個子數組A[p..q-1]和A[q+1..r],使得A[p...q-1]中的元素都小於A[q],A[q+1..r]中的元素都大於A[q];
Time of Update: 2018-12-03
<html><head><script language="javascript">var sorttype = 1; //desc function sortByCol(colNum){ //排序 var parNode = document.getElementById("listtable"); //定位到table上,listtable為表格的IDfor(var i=0; i<parNode.rows.length-1;
Time of Update: 2018-12-03
初始化:1.空串 string s;2.將s初始化s1的一個副本s1可以使char或者string string s(s1);3.將s初始化一個字串 string s("value")4.初始成n個字元 string s(n,'a');輸入:1.string s;cin>>s; 讀取並忽略開頭所有的空白字元(如空格,分行符號,定位字元)。
Time of Update: 2018-12-03
插入排序的適用範圍:對於少量元素的排序,他是一個有效演算法。由於書中的虛擬碼太經典,所以忍不住抄一下://虛擬碼INSERTION-SORT(A)for j= 2 to A.lengthkey=A[j]//insert A[j] into A[1...(j-1)]i=j-1;while i>0 and A[i]>keyA[i+1]=A[i] i=i-1A[i+1]=keyc++實現:/* 輸入:A[1...(n-1)] *原址排序 *version1 */template&
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006 題目大意: 輸入若干行英文,每行代表一棵樹,英文中可能有空格與重複,並且不超過30個字元,說不超過10,000種樹,
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
Time of Update: 2018-12-03
“許多有用的演算法在結構上是遞迴的,這些演算法典型的遵循分治法的思想。”這句話說明了分治思想的重要性,同時指明了遞迴與分治的關係,遞迴是一種結構,是實現手段,分治是其中蘊含的思想。 分治法:將原問題分解為幾個規模較小但類似於原問題的子問題,遞迴的求解這些子問題,然後再合并這些子問題的解來建立原問題的解。 分治模式在每層遞迴時,都有三個步驟: 分解:將問題劃分為一些子問題,子問題的形式與原問題一樣,只是規模更小; 合并:遞迴的求解子問題,如果子問題規模足夠小,則停止遞迴
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006 解題思路:類似於八皇后問題,DFS暴力解決代碼:#include <iostream>using namespace