zoukankan      html  css  js  c++  java
  • 活动安排(贪心算法)

    时限:1000ms 内存限制:10000K  总时限:3000ms

    描述:

    Jack是一名nwpu的大一新生,对学校举办的各种活动都十分的好奇,想尽可能多的参加这些活动。Npwu每天共有N项活动,其开始结束时间分别为B[i],E[i],(i = 1,2,……N)
    请问Jack一天最多能参加几项活动。当然,Jack在同一时间内只能参加一项活动,即jack参加的活动时间上不能重叠,但时间为[t1,t2],[t2,t3]的两个活动是可以同时参加的。

    输入:

    第一行 一个整数N(1<=n<=1000)表示活动总数。
    接下来N行表示各活动的起始,结束时间0<=B[i]<E[i]<24

    输出:

    一个整数表示Jack最多能参加的活动数目。

    输入样例:

    4
    10 11
    2 3
    8 10
    0 2

    输出样例:

    4

    #include<stdio.h>
    struct act
    {
        int begin;
        int end;
    }Arr[1000];
    int n;//总的活动数
    int sum=0;//最多可参加的活动数
    void search();
    void selection_sort();
    
    int main()
    {
        scanf("%d\n",&n);//n项活动
        for(int i=0;i<n;i++)
            scanf("%d%d",&Arr[i].begin,&Arr[i].end);//每项活动的起止时间
        selection_sort();//对活动按结束时间从早到晚排序
        search();//寻找最多的活动安排
        printf("%d\n",sum);
        return 0;
    }
    void search()//贪心算法
    {
        sum=1;
        int temp=Arr[0].end;
        for(int i=1;i<n;i++)
        {
            if(Arr[i].begin>=temp)
            {
                sum++;
                temp=Arr[i].end;
            }
        }
    }
    void selection_sort()//选择排序(升序)
    {
        int i,j,k,temp;
        for(i=0;i<n;i++)
        {
            k=i;
            for(j=i+1;j<n;j++)
                if(Arr[j].end<Arr[k].end)    k=j;
            struct act temp=Arr[i];
            Arr[i]=Arr[k];
            Arr[k]=temp;    
        }
    }
  • 相关阅读:
    html+css动态篇
    html+css定位篇
    首页的css
    display详细说明
    html+css 布局篇
    html+css杂记
    JS与ES的关系
    H5本地存储
    JavaScript面向对象
    JavaScript执行上下文
  • 原文地址:https://www.cnblogs.com/IThaitian/p/2595423.html
Copyright © 2011-2022 走看看