买袜子

那一抹青色 2014-09-09 07:55:53
题目描述
袜子1双10元,2双16,3双20, 如果买4双袜子最少需要多少钱呢?

输入
第一行输入三个正整数a、b、c,表示买1、2、3双袜子的钱数,保证买3双比2双合适,2双比1双合适。第二行有若干个正整数x,表示问你买x双袜子最少需要多少钱,以0结束,0的问题不回答。

代码
#include<stdio.h>  
int main()
{
int a,b,c,x,o1,o2,o3;
scanf("%d%d%d",&a,&b,&c);
while(1)
{
scanf("%d",&x);
if(x==0)
break;
o1=x/3;
o2=(x%3)/2;
o3=(x%3)%2;
if((2*b)<(c+a)&&x>=4&&o1>=1&&o3>=1) //这里是什么意思,原理?
{
o1--;
o3--;
o2=o2+2;
}
printf("%d\n",a*o3+b*o2+c*o1);
}
return 0;
}




怎么保证买3双比2双合适,2双比1双合适;
还有别的方法吗?
...全文
344 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aa5566f4 2014-09-10
  • 打赏
  • 举报
回复
我也看成妹子!!!
深度抽象 2014-09-10
  • 打赏
  • 举报
回复
百度 背包九讲
帅得不敢出门 2014-09-10
  • 打赏
  • 举报
回复
我怎么看成买妹子了呢
FancyMouse 2014-09-10
  • 打赏
  • 举报
回复
>怎么保证买3双比2双合适,2双比1双合适; 这个不是你保证出来的,是输入数据保证这样,你写程序的时候可以假设这个成立。
勤奋的小游侠 2014-09-10
  • 打赏
  • 举报
回复
if((2*b)<(c+a)&&x>=4&&o1>=1&&o3>=1) 很明显的意思 (2*b)<(c+a) 这个意思是说 假如买4双的时候,买2个2双比买1个1双+一个3双更划算时 &&x>=4 并且确实是买了4双以上的袜子 &&o1>=1&&o3>=1 而又并且确实有1个1双,1个3双在里面。 那还不如直接换成2个2双好了。 o1--; //不要一个1双 o3--; //不要一个3双 o2=o2+2//换成2个2双

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧