• 算法:01贪心算法


    2.1、基本概念

    2.1.1、贪心本质

    • 1、只根据当前已有的信息做出选择,一旦选择,就不会改变。

    2.1.2、利用贪心算法求解问题的2个特性

    • 1、贪心选择性质
    • 2、最优子结构

    2.1.3、贪心算法秘籍

    • 1、贪心策略:选择当前看上去最好的一个方案。
    • 2、局部最优解:一步步地得到局部最优解
    • 3、全局最优解:把所有的局部最优解合成为原来问题的一个最优解

    2.2、最优装载问题

    2.2.1、题目

    2.2.2、分析&算法设计

    2.2.3、代码

    //program 2-1
    #include <iostream>
    #include <algorithm>
    const int N = 1000005;
    using namespace std;
    double w[N]; // 古董的重量数组
    int main()
    {
        double c;
        int n;
        cout<<"请输入载重量c及古董个数n: "<<endl;
        cin>>c>>n;
        cout<<"请输入每个古董的重量,用空格分开:"<<endl;
        for(int i=0;i<n;i++)
        {
            cin>>w[i]; // 输入每个物品重量
        }
        sort(w,w+n);//按古董重量升序排序
        double tmp=0.0; // tmp为已装载到船上的古董重量
        int ans = 0; // ans为已装载的古董个数
        for(int i=0;i<n;i++)
        {
            tmp+=w[i];
            if(tmp<=c)
                ans++;
            else
                break;
        }
        cout<<"能装入的古董最大数量为Ans=";
        cout<<ans<<endl;
        return 0;
    }
    
    // 30 8
    // 4 10 7 11 3 5 14 2
    // 输出Ans=5
    

    2.2.4、算法解析及优化拓展

    2.3、背包问题

    2.3.1、题目

    2.3.2、分析&算法设计

    2.3.3、代码

    2.3.4、算法解析及优化拓展

  • 相关阅读:
    使用RabbitMq
    创建.NET core的守护进程
    nginx配置
    让.net core 支持静态文件
    关于sql中如何动态加WHERE条件
    CentOS上部署.net core
    chrom中 background 调用pop.js
    windows下安装redis
    sql server导出大批量数据
    python爬虫笔记
  • 原文地址:https://www.cnblogs.com/fewolflion/p/14186969.html
Copyright © 2020-2023  润新知