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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呐拽 中级黑马   /  2015-4-10 01:29  /  1505 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是个很经典的问题,今天听同学说了这个问题,忍不住就研究了一下,下面的代码中的person作为参数的话就可以做成方法了,由于 是就事论事的分析,所以就没做方法大神莫怪哦,好了下面开始阅读吧。另外弱弱的说一句,结果出来的时候我发现; 一个问题,销售行业都是坑啊!其实没便宜多少啊!
  1. public class Coke {

  2.         /**
  3.          * 28个人 买可乐  三个瓶盖换一个可乐 请问需要买多少瓶
  4.          * 分析:
  5.          * 1先买一瓶 ,
  6.          * 2不够喝,所以多买一瓶试试
  7.          * 3用瓶盖去还,直到不能换为止,
  8.          * 4然后判断买的可可乐够不够,够了就不再买了否则重复2过程
  9.          * 根据分析明显是个未知次数的循环,所以选择用while循环
  10.          */
  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 int person = 28;//喝可乐的人数
  14.                 int n = 1;//初始买一瓶可乐
  15.                 while (true) {
  16.                         n++;//买一瓶可乐
  17.                         int count = 0;
  18.                         int m = n;//m为瓶盖数
  19.                         while(m>=3){
  20.                                
  21.                                 int coun =m/3;//用瓶盖去换可可乐
  22.                                 m = coun +m%3; //之前剩余的有瓶盖的可乐加上新换来的有瓶盖的可乐
  23.                                 count = coun+count;//统 计换的可乐数
  24.                         }
  25.                         //判断是否需要再买够人喝了就不用再买了
  26.                         if (n+count>=person) {
  27.                                 break;
  28.                         }
  29.                        
  30.                 }
  31.                 System.out.println("可乐公司举办活动:三个瓶盖换一个可乐的活动");
  32.                 System.out.println(person+"个人,一人喝一瓶,需要买"+n+"瓶可乐");
  33.         }

  34. }
复制代码

评分

参与人数 1黑马币 +10 收起 理由
李大大 + 10

查看全部评分

17 个回复

倒序浏览
学习一下
回复 使用道具 举报
不错哟。这个思路。
回复 使用道具 举报
参考一下
回复 使用道具 举报
回头试试自己能搞出来不
回复 使用道具 举报
学习学习..赞!
回复 使用道具 举报
不错,挺有意思的。
回复 使用道具 举报
sisel 中级黑马 2015-4-10 23:23:49
8#
本帖最后由 sisel 于 2015-4-10 23:26 编辑

数学论断可知 需要瓶数不少于2n/3,故起点可以设高点减少循环次数,再深入一点 假如可以借瓶盖,那么买2瓶刚好可以喝3瓶,所以这个问题很简单 =N%3>0?N%3+2*N/3:2*N/3+1
回复 使用道具 举报
呐拽 中级黑马 2015-4-11 01:17:08
9#

欢迎来访!!!!!!!!!
回复 使用道具 举报
sisel 发表于 2015-4-10 23:23
数学论断可知 需要瓶数不少于2n/3,故起点可以设高点减少循环次数,再深入一点 假如可以借瓶盖,那么买2瓶 ...

代码很简洁 。不过我觉得这样的题,还是模拟一下实际的流程比较好
回复 使用道具 举报
natsu647 发表于 2015-4-10 23:14
不错,挺有意思的。

早上起来发现班里好多人都在写这个!
回复 使用道具 举报
natsu647 发表于 2015-4-10 23:14
不错,挺有意思的。

早上起来发现班里好多人都在写这个!
回复 使用道具 举报
joyjio 来自手机 中级黑马 2015-4-11 01:30:22
13#
哎,这个问题我始终弄的不是很明白!过来学习一下!
回复 使用道具 举报
joyjio 发表于 2015-4-11 01:30
哎,这个问题我始终弄的不是很明白!过来学习一下!

没有问题 !
回复 使用道具 举报
............
回复 使用道具 举报
  1. public class Cokcole {
  2.         public static void main(String[] args) {
  3.                 // 前三个人买,第四个人不买,第五第六个人买,第七个不买第八个第九个买
  4.                 // x个人买的话
  5.                 Scanner scanner = new Scanner(System.in);
  6.                 System.out.println("请输入有多少人:");
  7.                 int x = scanner.nextInt();
  8.                 if (x <= 3) {
  9.                         System.out.println("需要" + x + "瓶");
  10.                 }else if(x>3){
  11.                         System.out.println((x/3*2+1)+(x%3-1));
  12.                 }
  13.         }

  14. }
复制代码
回复 使用道具 举报
Dyna 中级黑马 2015-4-13 22:34:34
17#
静静的做个沙发!!
回复 使用道具 举报
前来顶贴
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马