zoukankan      html  css  js  c++  java
  • 42:换汽水瓶ExchangeBottle

    有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

    输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。

    输出描述:对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。

    输入例子:

    3

    10

    81

    0

    输出例子:

    1

    5

    40

    分析:

    n个空瓶要换尽可能多的水,第一次,喝了三瓶水,此时剩下n-3+1个空瓶,换一瓶空瓶,所以这样递推 f(n) = f(n-3+1)+1;f(n) = f(n-2)+1;

    f(n) = f(1)+n/2=n/2;n为奇数

    f(n)=f(2)+(n-2)/2=f(0)+n/2=n/2;n为偶数

    所以f(n) = n/2

     

     1 package huawei2;
     2 
     3 import java.util.Scanner;
     4 
     5 /*
     6  *
     7  *换汽水瓶  3个换一个,0结束
     8 输入例子:
     9 3
    10 10
    11 81
    12 0
    13 输出例子:
    14 1
    15 5
    16 40*/
    17 
    18 public class ExchangeBottle {
    19  
    20     public static void main(String[] args) {
    21         Scanner sc = new Scanner(System.in);
    22         while (sc.hasNext()) {
    23             int num = sc.nextInt();
    24             if(num == 0 || num < 1 || num > 100)
    25                 break;
    26             int m = num / 3;
    27             int n = num % 3;
    28             int count = m;
    29             while(m > 0){
    30                 int temp1 = m;
    31                 int temp2 = n;
    32                 m = (temp1 + temp2) / 3;
    33                 n = (temp1 + temp2) % 3;
    34                 count += m;
    35             }
    36             if(m == 0 && n == 2)
    37                 count++;
    38             System.out.println(count);
    39         }
    40         sc.close();
    41     }
    42 }
  • 相关阅读:
    02Hibernate入门
    01Hibernate概述
    ExtJS布局-Layout
    STARLIMS 安装升级解决方案
    Windows Server 2012 安装.Net Framework 3.5
    vim 复制操作
    linux下挂载新硬盘
    转载 更改mysql 数据存储路径
    转载 阿里云centOS防火墙配置
    (转载)java线程
  • 原文地址:https://www.cnblogs.com/newcoder/p/5823898.html
Copyright © 2011-2022 走看看