c++:
1030: 【分支结构】买东西
[题目描述]
用N元购买A物品价格为6元、B物品价格为5元、C物品价格为4元三种物品。
设计一程序,买尽量多的物品,且不剩余钱。
输入
输入N(表示总钱数)n>7
输出
输出A,B,C物品分别多少个?(格式见样例)
样例输入
40
样例输出
A=0 B=0 C=10
贪婪算法
首先应该以先购买C物品,就是钱数N%4,得到余数,余数可能的结果是0,1,2,3
如果为0则直接购买C物品N/4件
如果为1则购买C物品N/4-1件,B物品1件
如果为2则购买C物品N/4-2件,B物品2件、或者C N/4-1件A 1件
如果为3则购买C物品N/4-3件,B物品3件 、或者C N/4-2件A 1 件 B 1 件
#include <iostream>
using namespace std;
int main()
{
int x,y,z,sum,f=1;
cin>>sum;
if(sum<4) f=0;
if(sum%4==0) //刚好整除的情况
{
x=0,y=0,z=sum/4;
}
else if(sum%4==1)//除于4后余1,然后可以少买4元物品,拿钱去买5元的物品
{
x=0;y=1;z=sum/4-1;
}
else if(sum%4==2)//除于4后余2,然后可以少买4元物品,拿钱去买6元的物品
{
x=1;y=0;z=sum/4-1;
}
else if(sum%4==3)//除于4后余3,然后可以少买两4元物品,
//8+3=有11元拿钱去买5元和6元的物品 ,
//如果sum为7元刚好是 除于4后余3这种情况,就肯定有剩余买不了
{
if(sum==7) f=0;
x=1;y=1;z=sum/4-2;
}
//最后再用标记的f判断输出的内容
if(f) printf("A=%d B=%d C=%d\n",x,y,z);
else
printf("所有方案都有生育,无法解决!\n");
system("pause");
return 0;
}