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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

费了一上午做出来了,私密我
回复 使用道具 举报
这是一道脑筋急转弯,3个人先分两瓶可乐,有两个瓶盖,再向老板买一瓶,就有了3个瓶盖,3瓶可乐,用这3个瓶盖来支付前面多买的那瓶可乐,那么正好没有剩余
(n/3)*2 + n%3
回复 使用道具 举报
用笔在纸上划一划,当做一个数学题,找到规律,相信你会!
回复 使用道具 举报
这其实就像连锁反应,首先,第一个人买一瓶,喝完把盖子交给后面的人,然后反应开始了,之后每3个人只需要买两瓶就可以都喝到可乐,同时会多出来一个瓶盖,然后交给后面的人,一直反应到剩余人数不足3个,此时,剩余的人一人买一瓶就行了。于是,需要买的可乐瓶数是:1+((num-1)/3)*2+(num-1)%3.
当然之前有人发过帖子说向老板借瓶盖什么的,由于题目上没说可以借,所以就暂时不那么考虑了。
回复 使用道具 举报
zz_job 发表于 2014-10-7 23:22
这是考递归的   while也能做,但是代码量大,而且不如递归给人的印象深.

精彩,谢谢
回复 使用道具 举报
  1. package com.itheima;

  2. * 思路:
  3. *   1、定义一个for循环,每一个人开始买可乐。
  4. *          2、因为买3瓶可乐可以兑换一瓶可乐,那么可以定义一个要买的可乐变量,如果可乐数量达到3瓶,那么这时候将可乐的数量重置为1,
  5. *                 否则的话,就将这次买可乐的次数用number变量记录下来。
  6. */
  7. public class Test10 {

  8.         public static void main(String[] args) {

  9.                 int number_1 = getNumber(28);
  10.                 System.out.println("28个人需要买:"+number_1+"瓶可乐");
  11.                
  12.                 int number_2 = getNumber(50);
  13.                 System.out.println("50个人需要买:"+number_2+"瓶可乐");
  14.         }

  15.         private static int getNumber(int persons) {
  16.                
  17.                 int cola = 0;        //要买的可口可乐
  18.                
  19.                 int number = 0;        //这是用来记录买可口可乐的次数
  20.                 for (int i = 0; i < persons; i++) {
  21.                
  22. //                        因为3瓶可乐可以兑换1瓶,所以如果可乐达到3瓶,那么将可乐数重置为1
  23.                         if (cola==3) {
  24.                                 cola = 1;
  25.                         } else {        // 否则,就将这次买可乐的次数,用number变量进行记录。
  26.                                 cola++;
  27.                                 number++;
  28.                         }       
  29.                 }
  30.                 return number;
  31.         }

  32. }
复制代码
回复 使用道具 举报
好有趣的题目啊. :D
  1. public class Game
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 function(28);
  6.                 // ----------
  7.                 function(50);
  8.         }
  9.         public static void function(int p)
  10.         {
  11.                 int person = p; // 人数
  12.                 int cola = 0; // 买可乐
  13.                 int sum = 0; // 要买的可乐总数
  14.                 while (true)
  15.                 {
  16.                         if (person == 0)
  17.                         {
  18.                                 break;
  19.                         }
  20.                         else
  21.                         {
  22.                                 if (cola == 3)
  23.                                 {
  24.                                         person--;
  25.                                         cola = 1;// 换可乐又得一瓶盖.
  26.                                 }
  27.                                 else
  28.                                 {
  29.                                         cola++;
  30.                                         person--;
  31.                                         sum++;
  32.                                 }
  33.                         }
  34.                 }
  35.                 System.out.println(sum);
  36.         }
  37. }
复制代码
回复 使用道具 举报
x564573138 来自手机 中级黑马 2014-10-9 18:02:27
28#
沙发。,。。。。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马