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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春晓 中级黑马   /  2013-5-17 18:40  /  976 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package basetest;

  2. /*
  3. * 1:矿泉水1元钱1瓶,每2个空瓶换一瓶矿泉水,现有20元钱,请问可以买多少瓶矿泉水?       
  4. */
  5. /*                mon = 20;
  6.                 wat = 20;
  7.                 bot = 20;
  8.                 wat = 10;
  9.                 bot = 10;
  10.                 wat = 5;<
  11.                 bot = 5;
  12.                 wat = 2;//余1
  13.                 bot = 2;
  14.                 wat = 1;
  15.                 bot = 2;
  16.                 wat = 1;
  17.                 bot = 1;*/
  18. public class bottle {
  19.         public static void main(String[] args){
  20.                 System.out.println(water(20));
  21.         }
  22.         public static int water(int money){
  23.                 int bottle = 0,water = 0;
  24.                 water = money;
  25.                 bottle = water;
  26.                 //当只剩一个瓶子的时候,买不了水了,另想办法吧
  27.                 while(bottle>1){
  28.                         //瓶子是2的整数倍时,刚好能买瓶子一半的水
  29.                         while(!(bottle%2==1)&&bottle>1){
  30.                                 bottle = bottle/2;
  31.                                 water += bottle;
  32.                         }
  33.                         //瓶子不是2的整数倍时,买完水剩下一个瓶子,再加回来
  34.                         while(bottle%2==1&&bottle>1){
  35.                                 bottle = bottle/2;
  36.                                 water += bottle;
  37.                                 bottle += 1;
  38.                         }
  39.                 }
  40.                 water +=1;//最后再借个瓶子买瓶水,把瓶子还回去,完美了
  41.                 return water;
  42.         }
  43. }
复制代码
看到这个题,自己写了个小程序,分享下,看看方法有问题不?


评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

1 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马