版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)2動態(tài)規(guī)劃算法實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)繕?biāo):熟悉動態(tài)規(guī)劃算法實(shí)現(xiàn)的基本方法和步驟;學(xué)會動態(tài)規(guī)劃算法的實(shí)現(xiàn)方法和分析方法:二、實(shí)驗(yàn)內(nèi)容:問題1:最長公共子序列的問題,測試數(shù)據(jù)X=ABCBDAB Y=BDCABAX=zhejiang university of technology Y= (zhejiang university city college1-1實(shí)驗(yàn)代碼及截圖#include#include using namespace std;/求得兩個字符串的最大公共子序列長度int LCSLength(int m, int n,char* x, char* y,int *c, int *b)int
2、i, j, len;/i=0 | j=0for (i = 0; i m + 1; i+) ci0 = 0;for (j = 0; j 0for (i = 1; i = m; i+)for (j = 1; j = cij- 1)cij = ci- 1j;bij = 2;elsecij = cij- 1;bij = 3;len = cmn;return len;/構(gòu)造最長公共子序列void LCS(int i, int j, char *x, int *b)if (i = 0 | j = 0) return;if (bij = 1)LCS(i - 1, j- 1, x, b);cout xi -
3、1;/ci對應(yīng) str1 的第 i-1 個元素 else if (bij = 2)LCS(i - 1, j, x, b);elseLCS(i, j- 1, x, b);int main()char str11000, str21000;int i, m, n, len;cout 請輸入第一個字符串:;gets_s(str1);cout 請輸入第二個字符串:; gets_s(str2);m = strlen(strl);n = strlen(str2);int *c = new int*m + 1; /彳亍for (i = 0; i m + 1; i+)ci = new intn + 1;/列i
4、nt *b = new int*m + 1;for (i = 0; i m + 1; i+)bi = new intn + 1;len = LCSLength(m, n, str1, str2, c, b);cout 最長公共子序列的長度為: len endl;cout (最長公共子序列為:);LCS(m, n, str1, b);cout endl;system(pause);return 0;實(shí)驗(yàn)截圖: Fc-PrActicecxieCakulateMethDd&De-bugCAkuhtcMethDdLexeEhejiog university of tocluioloffy ij輸人J(
5、5 二個子符暗:zhejiiijig university city college 歸女會共子洋列曲以為* a& 最氏公共子序列為e zhejiang iin s vers i tyfi-jiaay 訥按任意世姓姓. .1-2實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)最開始考慮到窮舉,但很明顯時間復(fù)雜度過于龐大,利用最長公共子序列的最優(yōu)子結(jié)構(gòu) 性質(zhì),結(jié)合書上代碼進(jìn)行實(shí)驗(yàn),但實(shí)驗(yàn)中很明顯沒有考慮多種最長公共子序列的情況,這個 可能要留待后續(xù)繼續(xù)學(xué)習(xí)改進(jìn)。1-3參考書籍:本書部分代碼。2.最大子段和問題,比較三重循環(huán),分治法和動態(tài)規(guī)劃算法的效果,測試數(shù)據(jù):(-2,11,-4,13,-5,-2)過去大約三百年間,太陽黑子數(shù)的
6、時間數(shù)據(jù)如該鏈接所示,請問,歷史上何時太陽黑子迎來了最大爆發(fā)?2.1-1 .實(shí)驗(yàn)代碼及截圖#includeusing namespace std;int MaxSum1(int n, int *a, int& besti, int& bestj)int sum = 0;for (int i = 1; i = n; i+)for (int j = i; j = n; j+)int thissum = 0;for (int k = i; k sum)sum = thissum;besti = i;bestj = j;return sum;int MaxSum2(int* a, int left,
7、int right)int sum = 0;if (left = right)sum = aleft 0 ? aleft : 0;elseint center = (left + right) / 2;int leftsum = MaxSum2(a, left, center);int rightsum = MaxSum2(a, center + 1, right);int s1 = 0;int lefts = 0;for (int i = center; i = left; i-)lefts += ai;if (lefts s1)s1 = lefts;int s2 = 0;int right
8、s = 0;for (int i = center + 1; i s2)s2 = rights;sum = s1 + s2;if (sum leftsum)sum = leftsum;if (sum rightsum)sum = rightsum;return sum;int MaxSum3(int n, int *a)int sum = 0, b = 0;for (int i = 1; i 0) b += ai;else b = ai;if (b sum)sum = b;return sum;int main()int n,besti, bestj;int a = -2, 11,-4, 13
9、,-5,-2 ;cout 三重循環(huán):MaxSum1(6, a, besti, bestj) endl;cout 分治法: MaxSum2(a, 1, 6) endl;cout 動態(tài)規(guī)劃: MaxSum3(6, a) endl;system(pause);實(shí)驗(yàn)截圖:2實(shí)驗(yàn)總結(jié):三重循環(huán)時間復(fù)雜度為n*n*n,分治法時間復(fù)雜度為nlogn,動態(tài)規(guī)劃時間復(fù)雜度為n 簡單窮舉是最容易想到的,但是論間接性或時間空間復(fù)雜度都是動態(tài)規(guī)劃更加優(yōu)越,通過實(shí) 驗(yàn)感受動態(tài)規(guī)劃的魅力3參考書籍:本書部分代碼。1實(shí)驗(yàn)代碼及截圖#include#include#include#include #include using
10、 namespace std;double MaxSum1(int n, double *a, int& besti, int& bestj) double sum = 0;for (int i = 1; i = n; i+)for (int j = i; j = n; j+)double thissum = 0;for (int k = i; k sum)sum = thissum;besti = i;bestj = j;return sum;double MaxSum2(double* a, int left, int right)double sum = 0;if (left = rig
11、ht)sum = aleft 0 ? aleft : 0;elseint center = (left + right) / 2;double leftsum = MaxSum2(a, left, center);double rightsum = MaxSum2(a, center + 1, right);double si = 0;double lefts = 0;for (int i = center; i = left; i-)lefts += ai;if (lefts si)si = lefts;double s2 = 0;double rights = 0;for (int i =
12、 center + 1; i s2)s2 = rights;sum = si + s2;if (sum leftsum)sum = leftsum;if (sum rightsum)sum = rightsum;return sum;double MaxSum3(int n, double *a)double sum = 0, b = 0;for (int i = 1; i 0) b += ai;else b = ai;if (b sum)sum = b;return sum;int main() ifstream myfile(f:太 陽黑子.txt);if (!myfile.is_open
13、() cerr 文件打不開 endl;return 0;vector vec;string temp;while (getline(myfile, temp)vec.push_back(temp);double a500;int i = 0;for (auto j = vec.begin(); j != vec.end(); j+)istringstream is(*j);string s;int tmp = 0;while (is s)if (tmp = 2) double r = atof(s.c_str();ai+ = r;tmp+;i-;/int sum;int besti, best
14、j;clock_t cstart, cends;cstart = clock();double sum1 = MaxSum1(i, a, besti, bestj);cends = clock();int t1 = cends - cstart;cstart = clock();double sum2 = MaxSum2(a, 1, i);cends = clock();int t2 = cends - cstart;cstart = clock();double sum3 = MaxSum3(i,a);cends = clock();int t3 = cends - cstart;cout 太陽黑子最大爆發(fā)年份:;cout vec.at(bestj) endl;/cout vec.at(sum) endl;cout 三重循環(huán)用時: t1 毫秒 endl;cout 分治法用時: t2 毫秒 endl;cout 動態(tài)規(guī)劃用時:t3 毫秒 endl; system(pause);實(shí)驗(yàn)截圖2.2-2實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)中最大字段和算法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人事考試中心培訓(xùn)考試及答案
- 2025年山東棗莊事業(yè)單位考試題及答案
- 2025年江蘇事業(yè)編4月1號考試及答案
- 2025年博士計(jì)量和經(jīng)濟(jì)學(xué)筆試及答案
- 2025年移動政企項(xiàng)目交付經(jīng)理崗位筆試及答案
- 2025年贛州市事業(yè)單位報(bào)名考試及答案
- 2025年美術(shù)特崗筆試考試知識點(diǎn)及答案
- 2025年行政崗位筆試簡答題題庫及答案
- 2025年河南大專老師招聘筆試題及答案
- 2025年南京高校思政教師筆試題及答案
- 人力資源管理社會實(shí)踐調(diào)研報(bào)告
- 2025年醫(yī)保網(wǎng)絡(luò)安全自檢自查報(bào)告
- 制造企業(yè)總經(jīng)理年終總結(jié)
- 供應(yīng)室去污區(qū)工作總結(jié)
- 中醫(yī)醫(yī)院針灸進(jìn)修總結(jié)
- 超高層建筑深基坑施工風(fēng)險(xiǎn)動態(tài)評估體系研究
- 牙槽外科常見病例討論
- 藥品研發(fā)異常管理辦法
- DB1310∕T 326-2024 工程地質(zhì)層組劃分技術(shù)規(guī)程
- 麥當(dāng)勞清潔管理制度
- DB13T 2669-2018 高速公路服務(wù)區(qū)設(shè)計(jì)規(guī)范
評論
0/150
提交評論