贪心算法的应用

考虑最大利润
输入:种类数、需求量、各种类的库存量、各种类的总价
输出:最大利润

#include <iostream>
#include <algorithm>//调用sort排序
using namespace std;
struct mooncake{
   
    double store;
    double price;
    double tprice;
}cake[1000];
bool cmp(mooncake a,mooncake b)
{
   
return a.price>b.price;
}
int main(){
   
    int kinds;
    double needs,profits=0;
    cin>>kinds>>needs;
    for(int i=0;i<kinds;i++)
    cin>>cake[i].store;
    for(int i=0;i<kinds;i++)
    {
   
        cin>>cake[i].tprice;
        cake[i].price=cake[i].tprice/cake[i].store;
    }
    sort(cake,cake+kinds,cmp);//由大到小排序
    for(int i=0;i<kinds;i++){
   
        if(cake[i].store<=needs)//供应充足
        {
   
            needs-=cake[i].store;//更新需求量
            profits=cake[i].tprice;
        }else{
   //供应不足:一定要手动结束,否则会继续循环
            profits+=cake[i].price*needs;//由单价一个个算出 
            break;//手动结束
        }
    }
    cout<<profits;
    return 0;
}

考虑最小数
输入:0-9位数的次数
输出:由该数所组成的最小数

#include <iostream>
using namespace std;
int main(){
   
    int count[10];//分别记录0-9的个数
    for(int i=0;i<10;i++)
    cin>>count[i];
    for(int i=1;i<10;i++)//先确定首位
        if(count[i]>0)
        {
   
            cout<<i;
            count[i]--;
            break;
    }
    //直接由0-9一个个输出
    for(int i=0;i<10;i++)//循环各个位数
    for(int j=0;j<count[i];j++)//判断每个位数的次数 
    cout<<i;
    return 0;
}

统计不相交的区间个数-区间贪心
输入:区间个数、各区间的左右端点
输出:不相交的区间个数

#include <iostream>
#include <algorithm>//sort方法
using namespace std;
struct interval{
   //定义区间结构体
    int left;
    int right;
}inter[100];
bool cmp(interval a,interval b){
   
    if(a.left!=b.left) return a.left>b.left;//左端点由大到小排序
    else return a.right<b.right;//右端点由小到大排序
}
int main(){
   
    int n;
    int count=1;//记录不相交的区间个数 
    cin>>n;
        for(int i=0;i<n;i++)
        cin>>inter[i].left>>inter[i].right;
    sort(inter,inter+n,cmp);
    int lastval=inter[0].left;//存最大的:最右端的左端点
    for(int i=1;i<n;i++)
        if(inter[i].right<=lastval)//右端点小于左端点,说明这两个区间不相交
        {
   
            lastval=inter[i].left;//更新左端点
            count++;
    }else count--;
    cout<<count<<endl;
    return 0;
}

贪心算法:考虑当前情况下局部最优的策略,从而使全局达到最优的方法

相关推荐

  1. 贪心算法应用

    2024-02-11 03:26:02       28 阅读
  2. 贪心算法魅力与应用

    2024-02-11 03:26:02       18 阅读
  3. 贪心算法运用

    2024-02-11 03:26:02       37 阅读
  4. 贪心算法介绍

    2024-02-11 03:26:02       33 阅读
  5. C++算法贪心算法

    2024-02-11 03:26:02       7 阅读
  6. 贪心算法习题答案

    2024-02-11 03:26:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-11 03:26:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-11 03:26:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-11 03:26:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-11 03:26:02       20 阅读

热门阅读

  1. 基金分类

    2024-02-11 03:26:02       30 阅读
  2. 【算法题】100. 相同的树

    2024-02-11 03:26:02       29 阅读
  3. 十、项目开发总结报告(软件工程)

    2024-02-11 03:26:02       32 阅读
  4. Python进阶:标准库

    2024-02-11 03:26:02       32 阅读
  5. CSS3简介

    2024-02-11 03:26:02       31 阅读
  6. 不同类型的 I/O 实现方式和组件

    2024-02-11 03:26:02       33 阅读
  7. 数据库隔离级别的选择与实现

    2024-02-11 03:26:02       35 阅读
  8. 扩展说明: 指令微调 Llama 2

    2024-02-11 03:26:02       32 阅读
  9. minio: expand decommission pools in argocd

    2024-02-11 03:26:02       23 阅读
  10. Linux 命令行的世界 :2.文件系统中跳转

    2024-02-11 03:26:02       29 阅读
  11. c#进程(Process)常用方法

    2024-02-11 03:26:02       25 阅读
  12. Spring框架常见的注解Spring、SpringMVC、SpringBoot)

    2024-02-11 03:26:02       23 阅读