跟我一起学“仓颉”算法-贪心算法

目录

一、贪心算法

二、小结


一、贪心算法

贪心算法总是做出当前最好的选择,期望通过局部最优选择得到全局最优的解决方案。贪心算法一旦做出选择后,不管将来有什么结果,都不能改变。

贪心本质:贪心选择性质和最优子结构性质。

贪心选择性质:原问题的整体最优解可以通过一系列局部最优选择得到。

最优子结构:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

竹篮的载重是30,在不破坏零食和不超过载重的情况下,怎么装最多的零食?

零食重量 4 10 7 11 3 5 14 2
package Algorithm

func sort(arr: Array) {
    for (i in 0..arr.size - 1) {
        var minIndex = i
        for (j in i + 1..arr.size) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j
            }
        }
        var temp = arr[i]
        arr[i] = arr[minIndex]
        arr[minIndex] = temp
    }
    return arr
}

func tx(arr: Array, weight: Int64) {
    var temp = 0
    var count = 0
    for (i in 0..arr.size) {
        temp += arr[i]
        if (temp <= weight) {
            count++
        } else {
            break
        }
    }
    return count
}

main() {
    let arr = [4, 10, 7, 11, 3, 5, 14, 2]
    println("可以装入零食数: ${tx(sort(arr), 30)}")

}

二、小结

本章为大家详细的介绍了仓颉数据结构与算法中贪心算法的内容,下一章,为大家带来贪心算法练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉数据结构与算法有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家!!!

你可能感兴趣的:(跟我一起学“仓颉”算法,算法,数据结构,仓颉编程语言,华为,仓颉服务端开发)