實驗2 遞迴演算法實驗

2021-08-20 22:44:37 字數 2625 閱讀 8407

實驗2 遞迴演算法實驗

實驗內容

1. 編寫乙個程式,使用遞迴演算法輸出乙個一維字元陣列中所有字元的全排列,假設字元都不一樣。例如的全排列為(a,b,c), (a,c,b), (b,a,c), (b,c,a), (c,a,b), (c,b,a)。

源**:

#include

using

namespace

std;

char s[500],ans[500];

int v[500], len, sum;

void dfs(int k)

for(int i=0; iif(!v[i])

}}int main()

九陣列分數。1, 2, 3…9 這九個數字組成乙個分數,其值恰好為1/3,如何組合?編寫程式輸出所有的組合。

源**:

#include

using namespace std;

int a[500];

int v[500];

void dfs(int k)

}for(int i=1; i<=9; i++)

}}int main()

5823 / 17469 = 1/3

5832 / 17496 = 1/3

使用遞迴編寫乙個程式,逆序輸出乙個正整數。例如輸入1234,輸出4321。

源**:

#include

using

namespace

std;

int a;

void print(int a)

}int main()

使用遞迴編寫乙個程式,計算乙個正整數中所有數字之和。例如輸入234,輸出9。

源**:

#include

using

namespace

std;

int a, sum = 0;

void print(int a)

}int main()

使用遞迴編寫乙個程式,求乙個正整數n的所有劃分個數。例如,輸入3,輸出3;輸入4,輸出5。

源**:

#include

using

namespace

std;

int n, m;

int fun(int n, int m)

int main()

6. 編寫乙個遞迴函式,返回乙個字串中大寫字母的數目。例如,輸入「abcd」,輸出2。
源**:

#include

using

namespace

std;

int a, sum = 0;

string s;

void cal(string s, int k)

int main()

使用遞迴編寫乙個程式實現漢諾塔問題,要求在輸入圓盤數量之後,輸出圓盤的移動步驟,輸出格式示例如下:

第1步:1號盤從a柱移至b柱

第2步:2號盤從a柱移至c柱

…… 源**:

#include

using

namespace

std;

int n, sum = 0;

int i=1;

void move(int n, char st, char ed)

void hanoi(int n, char st, char m, char ed)

}int main()

當圓盤數量為4時,詳細移動步驟為:

4第1步:1號盤從a柱移至b柱

第2步:2號盤從a柱移至c柱

第3步:1號盤從b柱移至c柱

第4步:3號盤從a柱移至b柱

第5步:1號盤從c柱移至a柱

第6步:2號盤從c柱移至b柱

第7步:1號盤從a柱移至b柱

第8步:4號盤從a柱移至c柱

第9步:1號盤從b柱移至c柱

第10步:2號盤從b柱移至a柱

第11步:1號盤從c柱移至a柱

第12步:3號盤從b柱移至c柱

第13步:1號盤從a柱移至b柱

第14步:2號盤從a柱移至c柱

第15步:1號盤從b柱移至c柱

8. 一次大型派對的最後節目是選出一位幸運人士,該人士將獲得派對組織者準備的乙個鑽石戒指。而選擇幸運人士的辦法是讓所有人員一字排列,然後從左至右點數,凡是奇數號的全部剔除。對於剩下的人員,又從左至右點數,逢奇數號就剔除。如此不斷遞迴下去,直到只剩下乙個人為止,此人即為幸運之人。請設計乙個遞迴演算法計算幸運之人所在的位置並分析該演算法的時間複雜度。
源**:

#include

using

namespace

std;

int n;

int fun(int n)

int main()

時間複雜度分析:

時間複雜度:o(n)

演算法實驗2《貪心演算法實驗》

1.編寫乙個簡單的程式,實現單源最短路徑問題。include include using namespace std void init int list list 0 1 10 list 0 3 30 list 0 4 100 list 1 2 50 list 2 4 10 list 3 2 20...

演算法實驗三 遞迴與分治

一 實驗目的 理解遞迴演算法的思想和遞迴程式的執行過程,並能熟練編寫遞迴程式。掌握分治演算法的思想,對給定的問題能設計出分治演算法予以解決。二 實驗環境 vc6.0 三 實驗內容 無窮數列1,1,2,3,5,8,13,21,34,55,稱為fibonacci數列。它可以遞迴地定義為 第n個fibon...

實驗2實驗報告

實驗結論 1 書上任務1的填空 首先,使用 e 命令將記憶體單元 0021 0 0021 7 連續 8 個位元組資料修改為 30h,31h,32h,33h,34h,35h,36h,37h 然後用a命令輸入程式段 然後蠢蠢的我檢查了一下cs和ip的值,結果發現就是該程式段的起始位址,emmmm 好吧,...