贪心算法 看这一篇就够了 |
您所在的位置:网站首页 › 配方法的思想是什么 › 贪心算法 看这一篇就够了 |
贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。 贪心算法不是对所有问题都能得到体最优解,关键是整贪心策略的选择 贪心算法一般按如下步骤进行: ①建立数学模型来描述问题 。 ②把求解的问题分成若干个子问题 。 ③对每个子问题求解,得到子问题的局部最优解 。 ④把子问题的解局部最优解合成原来解问题的一个解 。 贪心算法实际应用---零钱找回问题这个问题在我们的日常生活中很普遍。 假设1元、2元、5元、10元、20元、50元、100元的纸币分别有 c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币? 用贪心算法的思想,很显然,每一步尽可能用面值大的纸币即可。在日常生活中我们自然而然也是这么做的。在程序中已经事先将Value按照从小到大的顺序排好。 #include #include using namespace std; int single_money[7]={1,2,5,10,20,50,100}; int number_money[7]={2,5,1,3,4,0,4}; //每种面值使用贪心后的张数 int count[7]={}; int total_count; int tanxin(int money) { if(money>=0) { for(int i=6;i>=0;i--) { count[i]=min(number_money[i],money/single_money[i]); money=money-count[i]*single_money[i]; } return 0; } else { return money; } } int main() { int money; coutmoney; if(!tanxin(money)) { cout |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |