第二章 遞推演算法

2021-10-03 20:54:06 字數 1196 閱讀 8982

乙個問題的求解需一系列的計算,在已知條件和所求問題之間總存在著某種相互聯絡的關係,在計算時,如果可以找到前後過程之間的數量關係(即遞推式),那麼,從問題出發逐步推到已知條件,此種方法叫逆推。無論順推還是逆推,其關鍵是要找到遞推式。這種處理問題的方法能使複雜運算化為若干步重複的簡單運算,充分發揮出計算機擅長於重複處理的特點。

遞推演算法的首要問題是得到相鄰的資料項間的關係(即遞推關係)。遞推演算法避開了求通項公式的麻煩,把乙個複雜的問題的求解,分解成了連續的若干步簡單運算。一般說來,可以將遞推演算法看成是一種特殊的迭代演算法。

數字三角形。如下所示為乙個數字三角形。請編乙個程式計算從頂到底的某處的一條路徑,使該路徑所經過的數字總和最大。只要求輸出總和。

1、 一步可沿左斜線向下或右斜線向下走;

2、 三角形行數小於等於100;

3、 三角形中的數字為0,1,…,99;

測試資料通過鍵盤逐行輸入,如上例資料應以如下所示格式輸入:57

思路:從遞推的思想出發,設想,當從頂層沿某條路徑走到第i層向第i+1層前進時,我們的選擇一定是沿其下兩條可行路徑中最大數字的方向前進,為此,我們可以採用倒推的手法,設a[i][j]存放從i,j 出發到達n層的最大值,則a[i][j]=max,a[1][1] 即為所求的數字總和的最大值。

**:

#includeusing namespace std;

int main()

cout滿足f1=f2=1,fn=fn-1+fn-2的數列稱為斐波那契數列(fibonacci),

它的前若干項是1,1,2,3,5,8,13,21,34……求此數 列第n項(n>=3)。

即:f1=1(n=1)        f2=1(n=2)        fn=fn-1 + fn-2(n>=3)

#include#includeusing namespace std;

int main()

printf("%d\n",f2);

return 0;

}

演算法設計與分析 第二章 遞推演算法

遞推法是一種重要的數學方法,在數學的各個領域中都有廣泛的運用,也是計算機用於數值計算的乙個重要演算法。這種演算法特點是 乙個問題的求解需一系列的計算,在已知條件和所求問題之間總存在著某種相互聯絡的關係,在計算時,如果可以找到前後過程之間的數量關係 即遞推式 那麼,從問題出發逐步推到已知條件,此種方法...

遞推演算法二

b align center size medium 遞推演算法二 冪積數列 size align b size medium b 冪積數列 b m 輸入整數n,m求小於n的按從小到大的第m個元素 分析 list b 窮盡法 b 從2開始到n,如果n 2 0,n n 2一直迴圈的直到不能除盡 n 3...

第二章 演算法

本章內容了解即可。如果大家對資料結構完全不了解,我建議你先去看一下b站上郝斌老師的課程。演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的優先序列,並且每條指令表示乙個或多個操作。只聽資料結構課程,當然可以,但是聽完後你可能沒有什麼感覺,因為你不知道他是幹嘛的。但是如果配合演算法來講解,你就...