1. 編寫乙個簡單的程式,解決8皇后問題。
#include
using
namespace std;
bool
backtrack
(int list[8],
int t)
return
false;}
intmain
()
2. 批處理作業排程問題
[問題描述]給定n個作業的集合j=(j1, j2, … , jn)。每乙個作業ji都有兩項任務需要分別在2臺機器上完成。每乙個作業必須先由機器1處理,然後再由機器2處理。作業ji需要機器j的處理時間為tji,i=1,2, … ,n; j=1,2。
對於乙個確定的作業排程,設fji是作業i在機器j上完成處理的時間。則所有作業在機器2上完成處理的時間和成為該作業排程的完成時間和。
批處理作業排程問題要求對於給定的n個作業,制定乙個最佳的作業排程方案,使其完成時間和達到最小。
要求輸入:
1)作業數 2)每個作業完成時間表:
作業完成時間
機器1機器2
作業1 2
1 作業2 3
1 作業3 2
3
#include
using
namespace std;
void
backtrack
(int
*t1,
int*t2,
int*list1,
int*list2,
int*list,
int&sumtime,
int&time,
int t,
int n)
for(
int i =
0; i < n; i++)
//選擇1個作業
}int
main
()int
*list =
newint
[n];
//記錄作業執行的順序
int time =0;
//總時間
backtrack
(t1, t2, list1, list2, list, sumtime, time,
0, n);
cout << sumtime << endl;
system
("pause>nul"
);return0;
}
3. 數字全排列問題
任意給出從1到n的n個連續的自然數,求出這n個自然數的各種全排列。如n=3時,共有以下6種排列方式:123,132,213,231,312,321。
注意:數字不能重複,n由鍵盤輸入(n<=9)。
#include
using
namespace std;
void
backtrack
(int n,
int t,
int*list)
for(
int i =
0; i < n; i++)}}
intmain
()
演算法入門(4) 回溯法
1 概念 回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術...
實驗五 回溯法
實驗 五 回溯法 一 實驗目的與要求 1 通過回溯法的示例程式理解回溯法的基本思想 2 運用回溯法解決實際問題進一步加深對回溯法的理解和運用 二 實驗內容 1 分析並掌握 符號三角 問題的回溯法求解方法 2 分析並掌握 n皇后 問題的回溯演算法求解方法 3 練習使用回溯法求解 整數變換 等問題。三 ...
實驗9 回溯法實驗一
實驗9 回溯法實驗一 oj練習 1.暢通工程續 2.最短路徑問題 3.最短路 4 choose the best route 5 乙個人的旅行 6 hdu today 7 bus system 8 0 or 1 實驗內容 1.程式設計實現dijkstra演算法。輸入 第1行第1個值表示頂點個數,第2...