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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

笔试有一套题目,感觉还行
28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,
* 那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)
* 答:28人需要买19瓶,50人需要买34瓶。
       因为换来的饮料还能继续换,
*    需要定义2个变量,一个temp,记录换完饮料之后的饮料瓶盖的数量。一个count用来记录当前拥有的饮料数
*     如果瓶盖数大于3就要一直循环换饮料,最后判断饮料数够的条件,因为所求的是最少饮料数,所以我程序就从1(可以根据题目而定吧我认为)开始往上加,直至有满足条件的数出现,具体条件看情况给定。
     所以我们要先定义一个方法求得瓶盖数,很容易得到如下程序:
public class Test10 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
        int temp =0;
                for (int i=1;i<1000;i++)
                {
                        int count=0;
                          temp =math(i);//将瓶盖数赋值给临时变量
                          count=i/3+i;//将当前的饮料数赋值给计数器
                        while(temp>=3)//如果瓶盖数多于3就可以继续换,所以定义此条件
                        {
                                count+=temp/3;
                          temp =math(temp);
                        }
                        if(count>=28)//判断所得的饮料数,如果大于28就输出所买饮料数
                                {
                                  System.out.println(i);
                                  break;
                                }
           
            
                }
        }
        public static int math(int a)//定义一个函数求出换之后的瓶盖数
        {
       int b =0;
       b=a%3;
       a=a/3+b;
       return a;
        }

}

   

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1 赞一个!

查看全部评分

22 个回复

倒序浏览
学习了,一个while循环是咋用的,不错
回复 使用道具 举报 1 0
哈哈,顶一个
回复 使用道具 举报
这个题要理解能力强啊
回复 使用道具 举报
还可以缩小               
                 int lid=0;
                int buyCoole=0;
                int sendCoole=0;
                while((buyCoole+sendCoole)<28)
                {
                        buyCoole++;
                        lid++;
                        if(lid/3==1){
                                sendCoole++;
                                lid-=2;
                        }
                }
                 System.out.println(buyCoole);
回复 使用道具 举报
看看,学习一下
回复 使用道具 举报
  1. public class jh
  2. {
  3.         public static void main(String[] args) {
  4.                 int 瓶盖 = 0;
  5.                 int 人数 = 0;

  6.                 for(int 瓶子=1;瓶子<1000;瓶子++){
  7.                         瓶盖++;
  8.                         人数++;
  9.                         while(瓶盖==3){
  10.                                 人数++;
  11.                                 瓶盖 = 1;
  12.                         }
  13.                         if(人数 == 28){
  14.                                 System.out.println(瓶子);
  15.                         }
  16.                 }
  17.         }
  18. }

  19. 感觉思路不一样
复制代码

点评

这个能使吗?  发表于 2015-9-7 17:03
回复 使用道具 举报
#在这里快速回复#哥们儿,技术分怎么获取的呢
回复 使用道具 举报
不错,学习了,赞
回复 使用道具 举报
自在 发表于 2015-9-7 16:10
#在这里快速回复#哥们儿,技术分怎么获取的呢

在你个人资料的设置-积分=积分规则里有详细说明
回复 使用道具 举报
这个就需要一定的技巧了
回复 使用道具 举报
初步看看,学习。面试难么,
回复 使用道具 举报
多谢楼主分享
回复 使用道具 举报
谢谢楼主分享
回复 使用道具 举报
学习下···
回复 使用道具 举报
不错,学习,感谢楼主分享。
回复 使用道具 举报
挺难思考的~
回复 使用道具 举报
经典的试题   学习学习
回复 使用道具 举报
谢楼主分享啦
回复 使用道具 举报
给力啊,正好学习下
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马