演算法導論 第二章 遞迴與分治

2022-01-26 14:17:20 字數 1896 閱讀 3489

階乘函式  斐波那契數列

#include #include 

#include

using

namespace

std;

//階乘函式

int fact(int

n)//

斐波那契數列

int fib(int

n)int

main()

階乘 斐波那契

排列問題

#include #include 

#include

#include

using

namespace

std;

//陣列長度 排列總數

intn, ans;/**

*@param s 陣列首位址

*@param k 已經匹配完成[0,k-1]

*@param n 陣列總長度 */

void perm(int *s,int k, int

n) cout

<

ans++;

return

; }

for(int i=k; i<=n; i++)

}int

main()

//對輸入的數 進行排序

sort(s, s+n);

cout

<

perm(s,

0, n-1

); cout

<< "

排列總數

"<< ans<

return0;

}

排列問題 對以後的排列樹有前置作用

整數劃分

#include #include 

#include

#include

using

namespace

std;

//整數劃分問題/**

*f(n,m)代表 n的整數劃分中 最大的數不超過m的方案數

*/int f(int n, int

m)int

main()

整數劃分

漢諾塔問題

#include #include 

#include

#include

using

namespace

std;

//漢諾塔問題

char str = ;

void mov(int a, int b, int

n) //

a移到b 借助c

void hanoi(int n,int a,int b,intc)}

intmain()

漢諾塔二分問題

#include #include 

#include

#include

using

namespace

std;

intn,k;

int find(int *s, int l, int r, int

k)int

main()

sort(s, s+n);

int c = find(s, 0, n-1

, k);

if(c!=-1

) cout

<< c <

else

cout

<

沒有找到

"<

return0;

}

二分遞迴版

非遞迴 迭代版 見 鏈結 :

演算法導論第二章

插入排序原始碼 1 include 2 include 3 4using namespace std 56 void insert sort inta 7 17 a i 1 key 18 19 2021 intmain 22view code 逆序輸出 1 include 2 include 3 4...

演算法導論 第二章作業

作業2.1 2 template void insert t a,int n a i 1 key 2.1 3 template void find t a,int n,t v if i 1 v nil 迴圈不變式 初始化 i 1,v還沒和任何a陣列中的元素比較,所以是 1,它為真。保持 如果j迴圈到...

演算法導論第二章筆記

這一章首先以乙個插入排序演算法開始,以此為切入點分析演算法。書上以偽 來介紹演算法,但是在這裡我基本上會用c語言實現一遍,並用自己的語言複述一遍演算法的思想。首先附上插入排序的具體實現。void insert sort eletype arr int start int end arr j 1 te...