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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我是坏人, 发表于 2016-1-24 21:41
挺棒~不过稍微有点小问题,3个盖子换一瓶可乐 ,喝完之后 还会有一个盖子呢 ...

嗯  好  反应过来了 多谢
回复 使用道具 举报
furuigang 发表于 2016-1-24 20:31
你说“28个人19瓶就可以了”,那你这么算算,28个人,买19瓶可乐,按照每3个可乐瓶盖换取一瓶可乐的原则 ...

嗯  好  反应过来了 多谢
回复 使用道具 举报

我自己的代码只要修改一个小地方就好了,帖子已更新,多谢大神不吝赐教!
回复 使用道具 举报
furuigang 发表于 2016-1-24 20:31
你说“28个人19瓶就可以了”,那你这么算算,28个人,买19瓶可乐,按照每3个可乐瓶盖换取一瓶可乐的原则 ...

我自己的代码只要修改一个小地方就好了,帖子已更新,多谢大神不吝赐教!
回复 使用道具 举报
学习了,辛苦~~
回复 使用道具 举报
本帖最后由 执剑人 于 2016-3-6 09:59 编辑

用递归做很简单的!为什么不用递归的思想?如果有更好的方法欢迎告知public static void main(String[] args) {
                int num = 28;                                //num来记录人数。
                int i = 0;
                while(getp(i) + i < num){
                        i++;
                }
                System.out.println(i);
        }

        public static int getp(int i){    //传入瓶盖值返回可乐值
                if(i > 3){
                        
                        return  i/3 + getp(i / 3  + i % 3);        //把产生瓶盖传回去!递归!
                }else{
                        return 0;
                }
        }

//最后能送我点黑马币么?我马上去就业班了,技术分还差很多!兄弟我会记得你的!
回复 使用道具 举报
549208564 发表于 2016-1-24 20:19
你这个答案有问题,28个人19瓶就可以了,这下面的代码有点丑,不过可以修改一下,应该可以

public class T ...

赞一个!!!
回复 使用道具 举报
public class Pinggai {
//只要不是28就让他循环
        public static void main(String[] args) {
                int ci=28;
                int i =0;
                for(int num=1;;num++){
                i=num;
                int max=num/3;
                num+=num%3;
                while(max >3){
                        num+=max/3;
                        num+=max%3;
                        max=max-max/3-max%3;
                }
                num+=num%3;
                if(num==ci){
                        System.out.println("共需要"+i+"次");break;}
                else{num=i;}
                }
        }
}
回复 使用道具 举报
public class Pinggai {
//只要不是28就让他循环
        public static void main(String[] args) {
                int ci=28;
                int i =0;
                for(int num=1;;num++){
                i=num;//把可能的的制赋给i
                int max=num/3;
                num+=num%3;
                while(max >3){//如果是大于三说明还可以循环
                        num+=max/3;
                        num+=max%3;
                        max=max-max/3-max%3;
                }
                num+=num%3;
                if(num==ci){//如果是正确的就输出i这个数
                        System.out.println("共需要"+i+"次");break;}
                else{num=i;}//否则把num值归回当下循环次i制
                }
        }
}

回复 使用道具 举报
qq812392675 发表于 2016-3-6 16:12
public class Pinggai {
//只要不是28就让他循环
        public static void main(String[] args) {

思路不太清晰不过还是写出哦来了
回复 使用道具 举报
新人 表示看不懂
回复 使用道具 举报
刚看完java基础视频前四天,方法不太熟练,也就不用了,半个小时多点敲出来的,不足之处望希望能指点出来.
  1. /*
  2. 题目:
  3. 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
  4. 假如是50人,又需要买多少瓶可乐?(需写出分析思路)

  5. 分析:
  6. 1,定义一个变量count,等于需要喝可乐的人数
  7. 2,定义一个变量temp,等于能兑换的可乐数量
  8. 3,每三瓶能兑换一瓶,可以当作条件,循环次数 % 3 = 0的时候,则temp自增
  9. 4,人数减去能兑换的可乐数量就是实际购买的可乐瓶数
  10. */
  11. import java.util.Scanner;                                                                       
  12. class Test1 {
  13.         public static void main(String[] args) {
  14.                 Scanner sc = new Scanner(System.in);                               
  15.                 System.out.println("请输入需要喝可乐的人数:");
  16.                 int count = sc.nextInt();
  17.                 int temp = 0;
  18.                 int i = 0;
  19.                 for (i = 1;i <= count ;i++ ) {
  20.                         if (i % 3 == 0) {
  21.                                 temp +=1;
  22.                         }
  23.                 }
  24.                 int sum = count - temp;
  25.                 System.out.println(count + "人需要购买" + sum + "瓶");
  26.         }
  27. }
复制代码



回复 使用道具 举报
精髓。。。新手研究了半天才懂,求轻喷。
回复 使用道具 举报
厉害,很精髓,看半天终于看懂了
回复 使用道具 举报
lgdbest 发表于 2016-3-16 23:06
厉害,很精髓,看半天终于看懂了

好好加油  这些都只是小意思而已  
回复 使用道具 举报
赞一个,666666
回复 使用道具 举报
思路很清晰,代码很简洁,点个赞
回复 使用道具 举报
稍微改进了一下

  1. import java.util.Scanner;

  2. class KeLei{
  3.         public static void main(String[] args){
  4.                 Scanner scan = new Scanner(System.in);
  5.                 System.out.print("请输入总人数:");
  6.                 int num = scan.nextInt();
  7.                 System.out.println("需要购买的可乐总数为:"+count(num));
  8.         }

  9.         public static int count(int men){
  10.                 //按人头算的存放需要购买的可乐总数
  11.                 int sum = 0;
  12.                 //存放需要额外购买的可乐
  13.                 int buy = 0;
  14.                 while (sum<men){
  15.                         sum++;
  16.                         //每三瓶就可以额外购买一瓶可乐
  17.                         if (sum%3==0){
  18.                                 buy++;
  19.                         }
  20.                 }
  21.                 //两者差就是需要的可乐
  22.                 return sum-buy;
  23.         }
  24. }
复制代码
回复 使用道具 举报
{:2_31:}学习了
回复 使用道具 举报
这个很贴合实际嘛
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马