zoukankan      html  css  js  c++  java
  • 算法期末备考-第6练-贪心算法

    算法期末备考-第6练

    贪心算法

    【主要内容】

    找硬币

    活动安排问题

     


    找硬币

    【题目描述】

    有四种硬币,分别是25分、10分、5分和1分,给顾客找六角三分。

    【题解】

    贪心策略是:从大到小找零即可。

     1 #include<cstdio>
     2  3 int coin[] = { 25 , 10 , 5 , 1 };
     4 int Num[4] ;
     5  6 int main()
     7 {
     8     int n = 63 ;
     9     for( int i = 0 ; n && i < 4 ; i++ ){
    10         Num[i] = n / coin[i] ;
    11         n %= coin[i] ;
    12     }
    13     for( int i = 0 ; i < 4 ; i ++ ){
    14         printf("Coin %d: %d
    ",coin[i],Num[i]);
    15     }
    16     
    17     return 0;
    18 }
    19 /*
    20 Coin 25: 2
    21 Coin 10: 1
    22 Coin 5: 0
    23 Coin 1: 3
    24 */
    找硬币问题

     


     

    活动安排问题

    【题目链接】

    https://www.acwing.com/problem/content/910/

    【题目描述】

    设有n个活动的集合E={1,2,3,…,n},所有的活动要求使用同一资源,而在同一时间内只有一个活动能使用这一资源,每个活动都有使用这一资源的开始时间si和结束时间fi,且si<fi。目标:要在所给的活动中,找出最大的相容的活动子集合。

    【题解】

    问题的本质为:最大不相交区间数量

    贪心策略:先按右端点从小到大排序,再按左端点从小到大。证明过程在书本

    【前置知识】

    其实结构体排序不是第一次遇到,在python课上谈及过Lambda按照关键排序,在C#课上也说过Lambda排序或重写CompareTo方法。

    其实C++提供了内置的Sort函数。

    Sort( a , a + n , cmp )

    第一个空填入,数组需要排序的首地址。

    第二个空填入,数组需要排序的尾地址。

    第三个空填入,传入排序的比较的方式。

    我们只需要以这种形式调用,且重写排序的规则即可。


     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4  5 const int N = 1e5 + 10;
     6 typedef struct Node {
     7     int S , F ; //Start , Finish
     8 }Node ;
     9 Node a[N] ;
    10 int n ;
    11 int cmp( Node u , Node v ){
    12     if( u.F == v.F ){
    13         return u.S < v.S ;
    14     }
    15     return u.F < v.F ;
    16 }
    17 18 int main()
    19 {
    20 21     scanf("%d",&n);
    22     for( int i = 0 ; i < n ; i ++ ) scanf("%d%d",&a[i].S , &a[i].F );
    23     sort( a , a + n , cmp );
    24 25 26     int ans = 1 , End = a[0].F ;
    27     for( int i = 1 ; i < n ; i++ ){
    28         if( End < a[i].S ){
    29             End = a[i].F ;
    30             ans ++ ;
    31         }
    32     }
    33     printf("%d
    ",ans);
    34     return 0 ;
    35 }
    活动安排问题

     

  • 相关阅读:
    java学习疑问
    HTTP method GET is not supported by this URL
    详解ListView分页(带图片)显示用法案例
    MySQL 字段数据类型/长度
    getRequestDispatcher()与sendRedirect()的区别
    Codeforces Round #754 (Div. 2) D,E 题解
    CCPC2019 Harbin Site B.Binary Numbers
    2020 EC Final D. City Brain
    [USACO15JAN]Grass Cownoisseur G
    CF1295F Good Contest
  • 原文地址:https://www.cnblogs.com/Osea/p/12131716.html
Copyright © 2011-2022 走看看