/*
* 題目大意: dp方法解活動選擇問題
解題思路: s(i,j)表示所有活動的集合,即活動ai和aj之間,所有與這兩個活動
相容的活動組成的子集。c[i,j]表示該集合的大小。
核心內容: 對問題的建模,採用該模型分析既可以使用這種dp解決,也可以類似lis問題的dp解決,還可以
貪心解決。但是所有的這些都建立在正確的建立了數學模型的基礎之上。
lis dp方法: c[j]表示集合s(0, j)的最大相容子集大小,c[j] = max(activity_s;
int comp(const void *op1, const void *op2)
const int activity_num_max = 32;
activity_s activities[activity_num_max+2];
const int activity_time_max = 100;
int c[activity_num_max+1][activity_num_max+2]; // 預設初始化為0
int activity_num;
int activity_select_dp()
cout << activity_select_dp() << endl;
return 0;
}
動態規劃 活動選擇問題
乙個遞迴解 設c i j 為sij中最大相容子集中的活動數目,當sij為空集時,c i j 0 當sij非空時,若ak在sij的最大相容子集中被使用,則則問題sik和skj的最大相容子集也被使用,故可得到c i j c i k c k j 1。當i j時,sij必定為空集,否則sij則需要根據上面提...
動態規劃 活動選擇問題
乙個遞迴解 設c i j 為sij中最大相容子集中的活動數目,當sij為空集時,c i j 0 當sij非空時,若ak在sij的最大相容子集中被使用,則則問題sik和skj的最大相容子集也被使用,故可得到c i j c i k c k j 1。當i j時,sij必定為空集,否則sij則需要根據上面提...
活動選擇問題 動態規劃 貪心演算法
問題描述 有乙個需要使用每個資源的n個活動組成的集合s 資源每次只能由乙個活動使用。每個活動ai都有乙個開始時間和結束時間,且 0 si fi 無窮 一旦被選擇後,活動ai就佔據半開時間區間 si,fi 如果 si,fi 和 sj,fj 互不重疊,則稱兩個活動是相容的。該問題就是要找出乙個由互相相容...