贪心算法、分治算法、动态规划

贪心算法

基本概念

贪心算法是指:在每一步求解的步骤中,它要求“贪婪”的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解。

贪心算法每一步必须满足一下条件:

1、可行的:即它必须满足问题的约束。

2、局部最优:他是当前步骤中所有可行选择中最佳的局部选择。

3、不可取消:即选择一旦做出,在算法的后面步骤就不可改变了。

例题

l  求最大子数组之和问题

给定一个整数数组(数组元素有负有正),求其连续子数组之和的最大值。

def main():

    s = [12,-4,32,-36,12,6,-6]

    print("定义的数组为:",s)

    s_max, s_sum = 0, 0

    for i in range(len(s)):

        s_sum += s[i]

        if s_sum >= s_max:

            s_max = s_sum # 不断更新迭代s_max的值,尽可能的令其最大

        elif s_sum < 0:

            s_sum = 0

    print("最大子数组和为:",s_max)

if __name__ == "__main__":

main()

l  最少加油次数

一辆汽车加满油后可行驶n公里。旅途中有若干个加油

猜你喜欢

转载自blog.csdn.net/m0_62089210/article/details/128129845