第四章
- 你对贪心算法的理解
贪心算法从每个决策中选择最优,即作出局部最优而解出全局最优
2.请选择一道作业题目说明你的算法满足贪心选择性质
人民币的面值有100、50、20、10、5、2、1元。请你输出找零纸币数最少的方案
输入格式:
两个整数,分别表示付款金额和消费金额
输出格式:
输入找零方案。包含若干行,每行包含两个数字,纸币面额和纸币数量
输入样例:
10 3
输出样例:
在这里给出相应的输出。例如:
5 1
2 1
代码:
#include <iostream> using namespace std; int main() { int m,w,z,i,j; int a[7]={100,50,20,10,5,2,1},b[7]={0}; cin>>m>>w; m-=w; for(i=0;i<7;i++) { while(m>=a[i]) { m-=a[i]; b[i]++; } } for(j=0;j<7;j++) { if(b[j]) { cout<<a[j]<<' '<<b[j]<<endl; } } return 0; }
通过每次找最优的一张零钱,不断进行这个操作,最终可得全局最优。
请说明在本章学习过程中遇到的问题及结对编程的情况
贪心算法的学习中,学会了找最想要的或者说最优的解时,往往需要苦思冥想,但一旦想出来这类题就轻而易举的解决了。