動態規劃 貪心演算法 活動選擇問題 收藏

2021-05-05 00:32:03 字數 1350 閱讀 2172

問題描述和分析:《演算法導論》p222——16.1活動選擇問題.

這裡給出了動態規劃和貪心演算法兩種演算法的**:

view plaincopy to clipboardprint?

動態規劃解法:  

#include

using namespace std;  

const int n = 11;  

int s[n+2];  

int f[n+2];  

int trace[n+2][n+2];//trace[i][j]跟蹤子問題s(i,j)每次最優時的劃分  

int dp[n+2][n+2];//dp[i][j]表示子問題s(i,j)的最多相容活動數  

//s(i,j)=  

}  

}  

//cout << "dp["<> s[i];  

for(i=1;i> f[i];  

s[0]=-1;  

f[0] = 0;  

s[n+1]=65535;  

f[n+1] = 65536;  

dp_solve();  

print(0,n+1);  

cout << endl;  

}  動態規劃解法:

#include

using namespace std;

const int n = 11;

int s[n+2];

int f[n+2];

int trace[n+2][n+2];//trace[i][j]跟蹤子問題s(i,j)每次最優時的劃分

int dp[n+2][n+2];//dp[i][j]表示子問題s(i,j)的最多相容活動數

//s(i,j)=}}

//cout << "dp["<> s[i];

for(i=1;i> f[i];

s[0]=-1;

f[0] = 0;

s[n+1]=65535;

f[n+1] = 65536;

dp_solve();

print(0,n+1);

cout << endl;

}view plaincopy to clipboardprint?

貪心演算法解法:  

#include

using namespace std;  

const int n = 11;  

int s[n];  

int f[n];  

void greet_activity()  

else 

}  

}  

int main()  

活動選擇問題 動態規劃 貪心演算法

問題描述 有乙個需要使用每個資源的n個活動組成的集合s 資源每次只能由乙個活動使用。每個活動ai都有乙個開始時間和結束時間,且 0 si fi 無窮 一旦被選擇後,活動ai就佔據半開時間區間 si,fi 如果 si,fi 和 sj,fj 互不重疊,則稱兩個活動是相容的。該問題就是要找出乙個由互相相容...

活動選擇問題 動態規劃 貪心演算法

問題描述 設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si 從圖中可以看出s中共有11個活動,最大的相互相容的活動子集為 和。2 動態規劃解決過程 1 活動選擇問題的...

活動選擇問題(動態規劃和貪心演算法)

有乙個由n個活動組成的集合s 1.這些活動使用同乙個資源,而這個資源在某一時刻只供乙個活動使用 2.每個活動都有乙個開始和結束時間si fi 如果被選中,則任務ai發生在半開時間區間 si,fi 3.如果兩個活動ai和aj不重疊,則稱兩個活動相容 活動選擇問題,希望選出乙個最大相容活動集 假設活動已...