3.Python算法之贪心算法思想
生活随笔
收集整理的這篇文章主要介紹了
3.Python算法之贪心算法思想
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
貪心算法
1.什么是貪心算法
2.貪心算法的特點和思路
3.貪心算法的缺點
4.貪心算法的基本思路
5.貪心算法的基本過程
6.貪心算法解決“找零”問題
6.貪心算法解決“汽車加油”問題
1.什么是貪心算法
? ? ? 貪心算法也稱為貪婪算法,它在求解問題時,總想用當前看來最好的方法來實現。這種算法思想不從整體最優上考慮問題,而僅僅考慮某種意義上的局部最優來求解問題。雖然貪心算法并不能得到所有問題的整體最優解,但是當面對范圍相當廣泛的許多問題時,能產生整體最優解或整體最優解的近似值。由此可見,貪心算法只是追求某個范圍內最優,可以成為“溫柔的貪婪”。
2.貪心算法的特點和思路
? ? ? 貪心算法從問題的某個初始值出發,逐步逼近給定的目標,以便盡快求出更好的解。當達到算法的某一步不能再繼續前進時,就停止算法,給出一個近似解。
3.貪心算法的缺點
4.貪心算法的基本思路
5.貪心算法的基本過程
6.貪心算法解決“找零”問題
? ? ?假設只有1分、2分、5分、1角、2角、5角、1元面值的硬幣。在超市結賬,如果需要找零錢,收銀員希望將最少的硬幣數找給顧客,那么,給定需要找的零錢數目,如何求得最少的硬幣數呢?
def main():# 存儲各種硬幣的面值coin_face_value = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0]# 存儲每種硬幣的數量coin_num = []# 擁有的零錢總和coin_total_sum = 0temp = input("請輸入每種零錢的數量:") # 12 11 11 11 11 11 11temp_list = temp.split(' ')for i in range(0, len(temp_list)):coin_num.append(int(temp_list[i]))# 用每種硬幣的數量乘以面值,再累計求和coin_total_sum += coin_num[i] * coin_face_value[i]give_change = float(input("請輸入需要找的零錢:"))if give_change > coin_total_sum:# 當要找的零錢大于收銀員的總金額時,無法找零print("數據有錯")return 0# 收銀員的硬幣總數 - 找的零錢# coin_total_sum = coin_total_sum - give_change# 要想用的硬幣數量最少,需要利用所有大面值的硬幣,因此從數組的大面值的元素開始遍歷i = len(coin_face_value) - 1while i >= 0:if give_change >= coin_face_value[i]:# 需要的硬幣個數need_coin_number = int(give_change / coin_face_value[i])if need_coin_number >= coin_num[i]:need_coin_number = coin_num[i] # 更新需要的硬幣個數# 零錢總和減去已經找掉的零錢give_change -= need_coin_number * coin_face_value[i]print("用了%d個%.2f枚硬幣" % (need_coin_number, coin_face_value[i]))i -= 1if __name__ == '__main__':main()執行后,首先輸入擁有的硬幣個數,然后輸入需要找零的金額,例如 1.6,就會有找零的方案?
程序運行結果:
6.貪心算法解決“汽車加油”問題
? ? 持續更新
總結
以上是生活随笔為你收集整理的3.Python算法之贪心算法思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pycharm中的Debug工具以及简单
- 下一篇: websocket python爬虫_p