A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目很简单
有人想买几套餐具,到餐具店看了后,发现自己带的钱可以买21把叉子和21把勺子,或者28把小刀。
如果他买的叉子,勺子,小刀数量不统一,就无法配成套,
所以他必须买同样多的叉子,勺子,小刀,并且正好将身上的钱用完。如果你是这个人,你该怎么办?
请用java编写程序来计算.


点评

哦,其实我想说穷举法是万能的  发表于 2012-6-29 01:56

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

2 个回复

倒序浏览
/*21假设这个人带的总钱数是21*28,则每把叉子和勺子的总钱数共21*28/21=28, 每把小刀的钱数是21*28/28=21;
再假设买相同数量 x 把的叉子、勺子和小刀,如满足条件则21*x+28*x=21*28,有这个等式看出x肯定大于1且小于21.
可以用for循环来实现JAVA代码*/
class ShopDemo
{
        public static void main(String[] args)
        {
                for(int x=1;x<21;x++)
                {
                   if(((21*x)+(28*x))==21*28)
                           System.out.println("各买:"+x);
                }
               
        }
}

得出结果是:各买:12

评分

参与人数 2技术分 +1 黑马币 +10 收起 理由
刘蕴学 + 1
张立江 + 10 赞一个!思路不错

查看全部评分

回复 使用道具 举报
把刀和叉看成一个整体 当成一样事物来看待。
一个刀可以买0.75个叉又或者3/4个叉,所以刀的个数必须是4的倍数,所以只能是4,8,12,16,20.又因为总共可以买刀28,所以刀的个数必须小于14,所以到的取值范围就出来了4,8,12 有因为它们个数一样,所以x+x*3/4=21  代码可以这样写,定义一个整数X代表叉,那么0<x<21; 然后在用循环来取4的倍数存进一个list集合,在定义一个标记Boolean flag   循环遍历list集合中的数字赋值给X计算X+X*3/4==21 true的话,结束循环并返回X

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马