算法第四章作业

一、对贪心算法的理解

  贪心算法又称之为贪婪算法,在考虑问题时,总是做出在当前状况来说最好的算则,而不从整理来考虑。从某种意义上说是局部最优解,贪心算法所得到的答案并不一定是整体最优解,所以在使用贪心算法一定要考虑清楚,是否能使用贪心算法。选择的贪心策略必须具有无后效性,即当前选择的结果必须不能对之前的结果状态产生影响,而只与当前状态有关。贪心算法的思想:1.建立数学模型来描述问题;2.把求解问题分成若干个子问题;3.对每一子问题求解,得到子问题的局部最优解;4.把子问题的局部最优解合成原来解问题的一个解。

二、贪心算法:货币找零

1.问题描述:人民币的面值有100、50、20、10、5、2、1元。请你输出找零纸币数最少的方案

2.输入格式:两个整数,分别表示付款金额和消费金额

3.输出格式:输入找零方案。包含若干行,每行包含两个数字,纸币面额和纸币数量

4.输入样例:

10 3

5.输出样例:在这里给出相应的输出。例如:
5 1
2 1
6.算法分析:每一步尽可能用面值大的纸币。
7.实现代码:

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int pay, cost;
cin >> pay >> cost;
int left = pay - cost;
int s[] = {100, 50,20,10,5,2,1};
for (int i = 0; i < 7; i++) {
if (left < s[i]) continue;
int count = left / s[i];
left -= count * s[i];
cout << s[i] << " " << count << endl;
}
return 0;
}

三、结对编程

  结对编程的情况和往常一样,会和队友交流讨论想法思路,共同解决问题以及矛盾。
posted @ 2020-11-15 01:02  刘思彤  阅读(162)  评论(0)    收藏  举报