黑马程序员技术交流社区

标题: 面试过了,技术分不够,只能来分享一下我的经验 [打印本页]

作者: lknum1    时间: 2015-9-7 13:28
标题: 面试过了,技术分不够,只能来分享一下我的经验
笔试有一套题目,感觉还行
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;
        }

}

   
作者: mah707    时间: 2015-9-7 13:30
学习了,一个while循环是咋用的,不错
作者: 牛小爽    时间: 2015-9-7 14:13
哈哈,顶一个
作者: 18664300701    时间: 2015-9-7 14:34
这个题要理解能力强啊
作者: purgatory    时间: 2015-9-7 14:55
还可以缩小               
                 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);
作者: kevin986745    时间: 2015-9-7 15:02
看看,学习一下
作者: 洋葱头头    时间: 2015-9-7 15:05
  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 16:10
#在这里快速回复#哥们儿,技术分怎么获取的呢
作者: 插兜    时间: 2015-9-7 16:56
不错,学习了,赞
作者: 洋葱头头    时间: 2015-9-7 17:05
自在 发表于 2015-9-7 16:10
#在这里快速回复#哥们儿,技术分怎么获取的呢

在你个人资料的设置-积分=积分规则里有详细说明
作者: 15210373205    时间: 2015-9-7 19:04
这个就需要一定的技巧了
作者: pz_xiaoxie    时间: 2015-9-7 19:19
初步看看,学习。面试难么,
作者: sharpCsu    时间: 2015-9-7 19:28
多谢楼主分享
作者: 夕阳游子    时间: 2015-9-7 21:11
谢谢楼主分享
作者: yz112069947    时间: 2015-9-7 21:12
学习下···
作者: 技术人生    时间: 2015-9-7 21:31
不错,学习,感谢楼主分享。
作者: wanglianqing    时间: 2015-9-7 22:01
挺难思考的~
作者: 远航20150826    时间: 2015-9-7 22:03
经典的试题   学习学习
作者: 史世锋    时间: 2015-9-7 22:08
谢楼主分享啦
作者: 0819刘海东    时间: 2015-9-7 23:07
给力啊,正好学习下
作者: 双元黑马12    时间: 2015-9-7 23:14
不错 我也要参加了 好紧张
作者: 0825王欢    时间: 2015-9-8 00:13
学习中、、、、、




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2