活动选择问题
2014-01-19 16:44
204 查看
题目描述
sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。输入
输入包括多组输入,每组输入第一行为申请的活动数n,从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;输出
输出每天最多能举办的活动数。示例输入
12 15 20 15 19 8 18 10 15 4 14 6 12 5 10 2 9 3 8 0 7 3 4 1 3
示例输出
5
#include<stdio.h> int main() { int N; int begin[100];//定义开始时间的数组 int end[100];//定义结束时间数组 int select[100] = {0};/初始化 int i = 0, count = 0;//初始化 int timestart = 0;//初始化 while(scanf("%d", &N)!=EOF)//排序N个不同事件,规则:按照结束时间从小到大排 { for(int k=0; k<N; k++) { scanf("%d", &begin[k]); scanf("%d", &end[k]); } for(int k=0;k<N-1;k++) for(int l=0; l<N-1-k; l++) if(end[l]>end[l+1]) { int t1, t2; t1 = begin[l]; begin[l]=begin[l+1]; begin[l+1] = t1; t2 = end[l]; end[l]=end[l+1]; end[l+1] = t2; } while(i<N) { select[i] = 0;//清零, 使前一次的结果对下一次运算没影响 if(begin[i] >= timestart) { select[i] = 1;//每执行一次,这个数组不同就会被赋一次1,(i 是i++ 的,不要忘了哈) timestart = end[i]; count++;//计数 } i++; } printf("%d\n", count); timestart = 0;//此处比较容易忽略,注意清零 i=0;//清零 count = 0;//清零 } return 0; }反思:这个题做了一个下午,一直WA, 最后和同学一起讨论才知道“清零”, 这是一个容易忽略的地方。。。一定要注意哈!!
相关文章推荐
- sdut 2073 活动选择问题
- 算法导论程序40--贪心算法(活动选择问题)
- 活动选择问题
- 算法 活动选择问题
- 数据结构:活动选择问题
- 基于贪心策略的活动选择问题
- 【算法导论】贪心算法之活动选择问题
- 活动选择问题(贪心)
- SDUTOJ 2073 —— 活动选择问题 贪心
- 贪心算法之活动选择问题
- 算法导论,贪心算法 —— 活动选择问题(python示例)
- 贪心算法 - 活动选择问题
- 活动选择问题(活动安排问题)(最大数目活动选择问题)贪心算法C++实现
- SDUT_活动选择问题2_贪心
- 动态规划——贪心算法——活动选择问题 收藏
- 算法导论 第16章 贪心算法-活动选择问题C++实现
- 选择不相交区间(活动安排问题)(贪心)(HDU2037)
- 【算法导论】用动态规划解活动选择问题
- 活动选择问题