第一章 遞推演算法

2021-09-27 07:32:58 字數 2317 閱讀 8179

特點:

乙個問題的求解需一系列的計算,

在已知條件和所求問題之間總存在著某種相互聯絡的關係,

如果可以找到前後過程之間的數量關係(即遞推式),那麼,從問題出發逐步推到已知條件,此種方法叫逆推。

無論順推還是逆推,其關鍵是要找到遞推式。

猴子吃桃

遞推關係:

f(n)=f(n-1)/2-1

f(n-1)=(f(n)+1)*2

邊界條件:f(10)=1

逆推法定義f[x][y]表示從n層出發到達(x,y)的路徑最大權值和。

自底向上計算:(給出遞推式和終止條件)

①從底層開始,本身數即為最大數;

②倒數第二層的計算,取決於底層的資料:12+6=18,13+14=27,24+15=39,24+8=32;

③倒數第三層的計算,取決於底二層計算的資料:27+12=39,39+7=46,39+26=65

f[i][j]=max(f[i+1][j],f[i+1][j+1])+a[i][j];

遞推邊界條件: f[n][i]=a[n][i]

#include #include using namespace std;

const int maxn = 1005;

int a[maxn][maxn],f[maxn][maxn],n;

int max(int a,int b)

int main()

骨牌有 2n 的乙個長方形方格,用乙個12 的骨牌鋪滿方格。

編寫乙個程式,試對給出的任意乙個n(n>0), 輸出鋪法總數。

【演算法分析】

(1)當n=1時,

只能是一種鋪法,鋪法總數有示為x1=1。

(2)當n=2時:

骨牌可以兩個並列豎排,也可以並列橫排,再無其他方法,如下左圖所示,因此,鋪法總數表示為x2=2;

(3)當n=3時:

當n=3時的排列骨牌的方法數是n=1和n=2排列方法數的和。

(4)當n=4時: 

5)推出一般規律:對一般的n,要求xn可以這樣來考慮,

若第乙個骨牌是豎排列放置,

剩下有n-1個骨牌需要排列,這時排列方法數為xn-1;

若第乙個骨牌是橫排列,

整個方格至少有2個骨牌是橫排列(1*2骨牌),因此剩下n-2個骨牌需要排列,這是骨牌排列方法數為xn-2。

從第一骨牌排列方法考慮,只有這兩種可能,所以有:

f(n)=f(n-1)+f(n-2) (n>2)

f(1)=1

f(2)=2

#includeusing namespace std;

int main()

昆蟲繁殖科學家在熱帶森林中發現了一種特殊的昆蟲,這種昆蟲的繁殖能力很強。

每對成蟲過x個月產y對卵,每對卵要過兩個月長成成蟲。

假設每個成蟲不死,第乙個月只有一對成蟲,且卵長成成蟲後的第乙個月不產卵(過x個月產卵).

問過z個月以後,共有成蟲多少對?0=

#includeusing namespace std;

int main(),b[101]=,i,j,x,y,z;

cin>>x>>y>>z;

for(i=1;i<=x;i++)

for(i=x+1;i<=z+1;i++)

cout<

return 0;

}

第一章 遞推演算法

解題方法 在已知條件和所求問題之間總存在著某種相互聯絡的關係,關鍵是前後過程之間的數量關係 即遞推式 然後進行順推或逆推。1.求斐波那契數列的前n項和 fibonacci 數列 0,1,1,2,3,5,8,13,21,34,f0 0 f1 1 fn fn 1 fn 2 n 2 關鍵 int n,i,...

第一章 遞推演算法

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

演算法基礎第一章

不同常數時間的操作 加或定址運算或位運算 執行時間不一樣 選擇最小的數,放到陣列的第乙個位置 時間複雜度 c n c n 1 c n 2 c 1 o n 2 額外空間複雜度 o 1 兩兩比較並交換,直到無交換 時間複雜度 o n 2 額外空間複雜度 o 1 左邊序列有序,右邊新加入乙個數,從右往左找...