zoukankan      html  css  js  c++  java
  • 数据结构作业——青子的生日

    Description

    青子的生日快到了,快斗计划着带青子去游乐场玩。游乐场有好多游戏项目,每个游戏项目都有自己的开始和结束时间。同一时间只能玩一个游戏,前一个游戏结束后可以马上开始下一个游戏。为了让青子过一个愉快的生日,快斗决定带青子玩尽可能多的游戏。因为青子是个从不半途而废的女孩,所以他们必须完整地玩完选择的每个游戏。

    Input

    输入第一行为一个正整数 n(1<=n<=100) ,表示可供选择的游戏项目数。
    然后是 n 行数据。每行包括 2 个数据 Ti_s,Ti_e (1<=i<=n),分别表示第 i个游戏项目的开始和结束时间(Ti_s<Ti_e,范围均在 int 内) ,为了简化问题,每个时间都用一个正整数表示。

    Output

    输出最多能完整玩完的游戏项目数。

    Sample Input

    41
    2
    2 3
    3 4
    4 5

    Sample Output

    4

    思路

    区间调度问题,要使得能完整玩完的游戏项目数最多,那么应该贪心的选取时间结束越早的游戏,因为结束时间越早,那么之后可选的游戏就相应越多。
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    const int maxn = 105;
    struct Node{
    	int first,second;
    }node[maxn];
    
    bool cmp(struct Node x,struct Node y)
    {
    	return x.second < y.second;
    }
    
    int main()
    {
    	int N,i;
    	while (~scanf("%d",&N))
    	{
    		for (i = 0;i < N;i++)
    		{
    			scanf("%d%d",&node[i].first,&node[i].second);
    		}
    		sort(node,node+N,cmp);
    		int ans = 0,t = 0;
    		for (i = 0;i < N;i++)
    		{
    			if (t <= node[i].first)
    			{
    				ans++;
    				t = node[i].second;
    			}
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    } 
    

      

  • 相关阅读:
    类class解读
    函数重载
    for循环之省略{}
    《c++程序设计现代方法》笔记2
    【程序】c++雇员工资管理系统
    贪婪法
    乘法口诀程序
    百钱买百鸡问题程序
    【转】牛人十个月自学C++ 现在做C#开发工作
    c++基本规则习惯
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/6123867.html
Copyright © 2011-2022 走看看