编程之美:第一章 1.9高效率地安排见面会
2014-09-14 20:56
288 查看
/* 每一个面试是一个整数的闭区间[B[i],E[i]],表示开始时间和结束时间,有N个面试要进行,求最少的面试点 思路: 按开始时间排序,使用贪心策略,每一个面试用一个最小的正整数k来表示可行的颜色,当然如果重叠了就必须使用 一个新的颜色 输入: 4(N场见面会,接下来有N行,每一行表示节目的开始时间和结束时间) 1 5 2 3 3 4 3 6 输出: 3 */ #include <iostream> #include <vector> #include <algorithm> #include <string.h> using namespace std; const int MAXSIZE = 1000; typedef struct Meeting { bool operator < (const Meeting& meet) const { return _iBeg < meet._iBeg; } int _iBeg; int _iEnd; }Meeting; //Meeting meet[MAXSIZE]; bool isOverlap(const Meeting& meet1,const Meeting& meet2) { if(meet1._iEnd <= meet2._iBeg || meet1._iBeg >= meet2._iEnd)//判断两个区间不重叠,只需一个区间的结束<=另一个区间的开始,或者一个区间的开始>=另一个区间的结束 { return false; } else { return true; } } int minAddress(Meeting* pMeet,int iLen) { int maxcolor = 0,k; int color[MAXSIZE]; bool bForbidden[MAXSIZE];//bForbidden是每个时间区间i,其他时间区间j中开始时间位于这个时间之前的 //且与这个时间区间有重叠的面试所占用的颜色表示数组 memset(bForbidden,0,sizeof(bForbidden));//没整明白 for(int i = 0 ; i < iLen; i++) { for(k = 0 ; k < maxcolor ; k++) { bForbidden[k] = false; } for(int j = 0 ; j < i ; j++) { if(isOverlap(pMeet[j],pMeet[i]))//判断在时间区间i之前的其他时间区间是否与当前时间区间重叠 { bForbidden[color[j]] = true; } } for(k = 0 ; k < maxcolor ; k++) { if(!bForbidden[k]) { break; } } if(k < maxcolor) { color[i] = k; } else { color[i] = maxcolor++; } } return maxcolor; } void process() { int n; while(EOF != scanf("%d",&n)) { if(n < 0 ) { break; } Meeting meet[MAXSIZE]; for(int i = 0 ; i < n ; i++) { scanf("%d %d",&meet[i]._iBeg,&meet[i]._iEnd); } sort(meet,meet+n); printf("%d\n",minAddress(meet,n)); } } int main(int argc,char* argv[]) { process(); getchar(); return 0; }
相关文章推荐
- 《编程之美》读书笔记05: 1.9 高效率的安排见面会
- 编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
- 《编程之美》1.9:高效率的安排见面会的一个解法
- 《编程之美》1.9:高效率的安排见面会的一个解法
- 编程之美1.9——高效率地安排见面会
- 编程之美读书笔记_1.9 高效率的安排见面会
- 读书笔记之编程之美 - 1.9 高效率地安排见面会
- 编程之美--1.9高效率的安排见面会(解法二python)
- 编程之美-高效率安排见面会的方法整理
- 1.9 高效率的安排见面会
- 编程之美-高效率的安排见面会
- flyinghearts《编程之美》读书笔记连载(6)-高效率安排见面会
- 编程之美:高效率地安排见面会
- 第1章 游戏之乐——高效率地安排见面会
- 【编程之美】高效率的安排见面会
- 编程之美读书笔记之-高效率的安排见面会
- 【编程之美】高效率的安排见面会
- 编程之美----高效率地安排见面会----贪心策略
- 编程之美 set 15 高效率地安排见面会
- 编程之美-----高效率地安排见面会