版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗1 分治法實驗?zāi)康模?1. 掌握合并排序的基本思想 2. 掌握合并排序的實現(xiàn)方法 3. 學(xué)會分析算法的時間復(fù)雜度 4. 學(xué)會用分治法解決實際問題實驗內(nèi)容:分治法求幾個大小不同整數(shù)的最大最小元。主要儀器設(shè)備:華碩筆記本、visual stdio2013上機(jī)調(diào)試修改源程序:#include<iostream>#include<time.h>#define N 5using namespace std;void getData(int a, int n)time_t t;srand(unsigned)time(&t);int i;for (i = 0; i <
2、; n; i+)ai = rand() % 100;void MaxMin(int i, int j, int l,int &max, int &min)int maxl, minl;if (i = j)max = min = lj;else if (i = j - 1)if (li < lj)max = lj;min = li;elsemax = li;min = lj;elseint m = (i + j) / 2;MaxMin(i, m, l, max, min);MaxMin(m + 1, j, l, maxl, minl);if (max < maxl)m
3、ax = maxl;if (min>minl)min = minl;void main()int lN, max, min;getData(l,N);for (int i = 0; i < N; i+)cout << li << " "cout << endl;MaxMin(0, 4, l, max, min);cout << "MAX=" << max << " " << "MIN=" << min <
4、;< endl;輸出結(jié)果:討論、心得(可選):分治算法是很有用的算法效率很高,分治法的設(shè)計一般是遞歸的。兩路合并排序是一個典型的分治算法,其基本運算為元素比較,最壞情況下的時間為W(n)=O(nlogn),在排序過程中需要使用與原序列相同長度的輔助數(shù)組temp,因此它所需的額外空間為O(n)。通過編寫代碼,我很好的掌握了分治法的步驟:劃分;求解子問題;合并。對“分治策略”有了更深的體會,它將原問題劃分為彼此獨立的、規(guī)模較小而結(jié)構(gòu)相同的子問題。實驗2貪心法實驗?zāi)康模?.掌握貪心算法的基本思想2.掌握貪心算法的典型問題求解3.進(jìn)一步多級調(diào)度的基本思想和算法設(shè)計方法4.學(xué)會用貪心法分析和解決實
5、際問題實驗內(nèi)容:利用貪心法來解決背包問題,使得具有有限空間的背包具有最大的價值。主要儀器設(shè)備:華碩筆記本、visual stdio2013上機(jī)調(diào)試修改源程序:#include<iostream>using namespace std;void DP(int c5050,int w50,int v50,int n,int C) for(int i=0;i<=C;i+) c0i=0; for(int t=1;t<=n;t+) ct0=0; for(int j=1;j<=C;j+) if(wt<=j) if(vt+ct-1j-wt>ct-1j)ctj=vt+
6、ct-1j-wt;else ctj=ct-1j; else ctj=ct-1j; void Output(int c5050,int x50,int w50,int n,int C) for(int k=n;k>=2;k-) if(ckC=ck-1C) xk=0; else xk=1;C=C-wk; x1=c1C?1:0;int main() int c5050; int w50,v50,x50,C,n; cout<<"輸入物品總個數(shù):" cin>>n; cout<<"輸入背包的總?cè)萘浚?quot; cin>>
7、C; cout<<"依次輸入物品的重量:"<<endl; for(int i=1;i<=n;i+) cin>>wi; cout<<"依次輸入物品的價值:"<<endl; for(int t=1;t<=n;t+) cin>>vt; DP(c,w,v,n,C); Output(c,x,w,n,C); cout<<"最優(yōu)解為:"<<endl; for(int e=1;e<=n;e+) cout<<xe<<
8、" " cout<<endl<<"最大容量為:"<<endl; cout<<cnC<<endl; return 0; 輸出結(jié)果:討論、心得(可選):貪心法是一種求解組合優(yōu)化問題的算法設(shè)計技術(shù)它可用于求背包問題、帶時限的作業(yè)進(jìn)行排序問題等,其求解過程由一些列決策構(gòu)成。貪心算法的關(guān)鍵在于貪心策略,兩要素是:最優(yōu)子結(jié)構(gòu)和貪心策略,背包問題是一個典型的貪心算法。通過編寫貪心法處理背包問題,我對于貪心法的解決問題的思路更熟悉了。實驗3回溯法實驗?zāi)康模?.掌握回溯算法的基本思想2.通過n皇后問題求解熟悉回溯
9、法 3. 使用蒙特卡洛方法分析算法的復(fù)雜度實驗內(nèi)容:要求在一個8*8的棋盤上放置8個皇后,使得它們彼此不受“攻擊”。兩個皇后位于棋盤上的同一行、同一列或同一對角線上,則稱它們在互相攻擊?,F(xiàn)在要找出使得棋盤上8個皇后互不攻擊的布局。主要儀器設(shè)備:華碩筆記本、visual stdio2013上機(jī)調(diào)試修改源程序:#include <iostream>#include<cmath>using namespace std;bool Place(int k, int i, int *x)for (int j = 0; j<k; j+)if (xj = i)
10、 | (abs(xj - i) = abs(j - k)return 0;return 1;void NQueen(int k, int n, int *x)int a100100 = ;for (int i = 0; i<n; i+)if (Place(k, i, x) = 1)xk = i;if (k = n - 1)for (int i = 0; i<n; i+)cout << xi << " "aixi = 1;cout << endl << "如下圖示" << endl;f
11、or (int i = 0; i<n; i+)for (int j = 0; j<n; j+)cout << aij << " "cout << endl;cout << endl;else NQueen(k + 1, n, x);void NQueen(int n, int *x)NQueen(0, n, x);int main()int n;cin >> n;int k100;NQueen(n, k);return 0;輸出:討論、心得(可選):通過這次試驗我對皇后問題的知識點有了很大的了解,編寫代
12、碼和調(diào)試代碼的能力有所提高。對于回溯法的認(rèn)知也更深入了在算法設(shè)計策略中,回溯法是比貪心法和動態(tài)規(guī)劃法更一般的方法。n皇后問題以檢查兩皇后是否沖突作為基本運算,該算法的最壞情形復(fù)雜性為O(3n×2nn)=O(nn+1)。實驗4動態(tài)規(guī)劃法實驗?zāi)康模?.掌握動態(tài)規(guī)劃算法的基本思想2.掌握多段圖的動態(tài)規(guī)劃算法3.選擇鄰接表或鄰接矩陣方式來存儲圖4.分析算法求解的復(fù)雜度實驗內(nèi)容:設(shè)G=(V,E)是一個帶權(quán)有向圖,其頂點的集合V被劃分成k>2個不相交的子集Vi,1<i<=k,其中V1和Vk分別只有一個頂點s(源)和一個頂點t(匯)。圖中所有邊的始點和終點都在相鄰的兩個子集Vi和
13、Vi+1中。求一條s到t的最短路線。參考課本P124圖7-1中的多段圖,試選擇使用向前遞推算法或向后遞推算法求解多段圖問題。主要儀器設(shè)備:華碩筆記本、visual stdio2013上機(jī)調(diào)試修改源程序:#include <stdio.h>#include <stdlib.h>#include <conio.h>#include "iostream"#define MAX 100 #define n 12 #define k 5 using namespace std;int cnn;void init(int cost) int i, j
14、;for (i = 0; i<13; i+)for (j = 0; j<13; j+)cij = MAX;c12 = 9; c13 = 7; c14 = 3; c15 = 2; c26 = 4; c27 = 2; c28 = 1;c36 = 2; c37 = 7; c48 = 11; c57 = 11; c58 = 8; c69 = 6; c610 = 5;c79 = 4; c710 = 3; c810 = 5; c811 = 6; c912 = 4; c1012 = 2; c1112 = 5;void fgraph(int cost, int path, int d) int r
15、, j, temp, min;for (j = 0; j <= n; j+)costj = 0;for (j = n - 1; j >= 1; j-)temp = 0;min = cjtemp + costtemp; for (r = 0; r <= n; r+)if (cjr != MAX)if (cjr + costr)<min) min = cjr + costr;temp = r;costj = cjtemp + costtemp;dj = temp;path1 = 1;pathk = n;for (j = 2; j<k; j+)pathj = dpath
16、j - 1;int main()int cur = -1;int cost13,d12;int pathk;cout <<"多段圖問題" << endl;cout << "n"init(cost);fgraph(cost, path, d);cout << "向前遞推后的最短路徑:n"for (int i = 1; i <= 5; i+)cout << pathi << " "cout << "n"cout << endl &l
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版《道德與法治》二年級上冊第1課《假期有收獲》精美課件(第1課時)
- 物業(yè)老舊小區(qū)安裝電梯后費用分擔(dān)協(xié)議模板
- 仲裁協(xié)議(課件備課)
- 2024年BIM工程師技能提升培訓(xùn)課件
- 教學(xué)創(chuàng)新之路:2024年級3dmax教案發(fā)展
- 2024年工程制圖教案:未來教學(xué)模式探索
- 2故宮課件:2024年青少年歷史文化教育平臺
- 2024年教育課件展:0以內(nèi)加減法教學(xué)新思路
- 項目質(zhì)量控制措施
- 2024年高考《錦瑟》課件要點
- 電力工程施工售后保障方案
- 2024年小學(xué)心理咨詢室管理制度(五篇)
- 第16講 國家出路的探索與挽救民族危亡的斗爭 課件高三統(tǒng)編版(2019)必修中外歷史綱要上一輪復(fù)習(xí)
- 機(jī)器學(xué)習(xí) 課件 第10、11章 人工神經(jīng)網(wǎng)絡(luò)、強(qiáng)化學(xué)習(xí)
- 北京市人民大學(xué)附屬中學(xué)2025屆高二生物第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 書籍小兵張嘎課件
- 氫氣中鹵化物、甲酸的測定 離子色譜法-編制說明
- 2024秋期國家開放大學(xué)??啤稒C(jī)械制圖》一平臺在線形考(形成性任務(wù)四)試題及答案
- 2024年黑龍江哈爾濱市通河縣所屬事業(yè)單位招聘74人(第二批)易考易錯模擬試題(共500題)試卷后附參考答案
- 私募基金管理人-廉潔從業(yè)管理準(zhǔn)則
- 房地產(chǎn)估價機(jī)構(gòu)內(nèi)部管理制度
評論
0/150
提交評論