任务描述
本关任务:目前的纸币系统包含5种纸币,为1元、5元、16元、23元和33元,输入要购买物品的价格n为1~99元的整数,则购买该价格的物品最少需要几张纸币呢?分别给出穷举法和贪心算法的结果
编程要求
根据提示,在右侧编辑器补充代码,用户输入物品价格n,计算并输出2个结果,分别代表穷举法的结果和贪心法的结果
测试说明
平台会对你编写的代码进行测试:
测试输入:4
预期输出: 4 4
代码如下:
·res1表示穷举法(穷举每一种可能性)
·res2表示贪心法(丛最大面值开始,尽可能多的选择较大面值)
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int res1=99, res2=0;
int i, j,k,e,u;
for (i = 0; i < 4; i++)
for (j = 0; j < (n - 33 * i) / 23 + 1; j++)
for (k = 0; k < (n - 33 * i - 23 * j) / 16 + 1; k++)
for (e = 0; e < (n - 33 * i - 23 * j - 16 * k)/5 + 1; e++)
for (u = 0; u < n - 33 * i - 23 * j - 16 * k - 5 * e + 1; u++)
if (33 * i + 23 * j + 16 * k + 5 * e + u == n)
if (i + j + k + e + u < res1)
res1 = i + j + k + e + u;
res2 += n / 33;
n = n % 33;
res2 += n / 23;
n = n % 23;
res2 += n / 16;
n = n % 16;
res2 += n / 5;
n = n % 5;
res2 += n;
cout << res1 <<" "<<res2<< endl;
return 0;
}
有用的话可以给博主点个关注~