贪心算法实现活动安排问题(实例代码
实例代码)
C++贪心算法实现活动安排问题
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。这篇文章主要介绍了
C++贪心算法实现活动安排问题,需要的朋友可以参考下
贪心算法
贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考
虑,他所做出的是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前
的过程不会影响以后的状态,只与当前状态有关。
具体代码如下所示:
#include
#include
#include
#include
#include
#include
using namespace std;
struct activity
{
int no;
int start;
int finish;
};
bool cmp(const activity &x, const activity &y)
{
return x.finish
}
int greedySelector(int m,int solution[],struct activity activity[]){
int number = 1;
solution[0] = 1;
int i,j = 0,counter = 1;
for(i = 1;i < m ;i++)
{
if(activity[i].start >=activity[j].finish)
{
solution[i] = 1;
j = i;
counter++;
}
else
solution[i] = 0;
}
cout << "The amount of activities is:"<> t;
fout.open("activity.txt",ios::app);
if(!fout){
cerr<<"Can not open file 'activity.txt' "< m = 1 + rand()%100000;
fout< activity[i].start) break;
}
}
QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&nBeginTime);
sort(activity,activity+m,cmp);
greedySelector(m,solution,activity);
QueryPerformanceCounter(&nEndTime);
cost=(double)(nEndTime.QuadPart - nBeginTime.QuadPart) / (double)nFreq.QuadPart;
fout << cost << endl;
cout << "\nThe running time is:" << cost << " s" << endl;
}
fout.close();
cout << endl << endl;
cout << "Success!" << endl;
return 0;
}
总结总结
以上所述是小编给大家介绍的C++贪心算法实现活动安排问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编
会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!