zoukankan      html  css  js  c++  java
  • 算法 对贪⼼算法对研究

      

        贪⼼算法是⼀种求近似解的思想。当能满⾜⼤部分最优解时就认为符合逻辑要求。

    还⽤找零 这个案例为例, 考虑使⽤贪⼼算法解题: ⽐如当找零数为 36 时, 从硬币数的最⼤值 20 开始填充,
    填充不下后再⽤ 10 来填充, 以此类推, 找到最优解。

      

       场景: 假如有 1, 5, 10, 20,50,100 的⼈⺠币
       36 // 找零数
       [20, 10, 5, 1] // 需 20、10、5、1
     
    class Change {
    constructor(changeType){
    this.changeType = changeType.sort((r1, r2) => r2 - r1)
    }
    makeChange(amount) {
    const arr = []
    for (let i = 0; i < this.changeType.length; i++) {
    while (amount - this.changeType[i] >= 0) {
    arr.push(this.changeType[i])
    amount = amount - this.changeType[i]
    }
    }
    return arr
    }
    }
    const change = new Change([1, 5, 10, 20,50,100])
    console.log(change.makeChange(36))
    console.log(change.makeChange(136))
    console.log('-'.repeat(100))
    const change1 = new Change([1, 3, 4])
    console.log(change1.makeChange(6)) // 其实33最好
    贪⼼算法相对简单,就是先怼最⼤的,⼤部分情况都OK,但是有些情况不是最优解,所以⼈不要太贪
    ⼼哦
    console.log('-'.repeat(100))
    const change1 = new Change([1, 3, 4])
    console.log(change1.makeChange(6)) // 其实33最好
  • 相关阅读:
    linux inode索引节点使用率100% 解决
    Linux常用命令
    mongodb常用命令
    抓包工具简介:fiddler、charles
    博客园自定义更换背景
    ant+jmeter应用
    BeanShell断言
    jmeter 常用函数(一):__Random
    git常见错误解决方法
    react环境搭建
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/13047157.html
Copyright © 2011-2022 走看看