华为研发工程师编程题

Posted sun-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为研发工程师编程题相关的知识,希望对你有一定的参考价值。

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

 1 /**
 2 * 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,
 3 * 她最多可以换多少瓶汽水喝?”答案是5瓶,
 4 * 方法如下:
 5 * 先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。
 6 * 然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
 7 */import java.io.IOException;
 8 
 9 import java.util.Scanner;
10 
11 public class Main{
12     public static void main(String[] args) throws IOException {
13         Scanner sc = new  Scanner(System.in);
14         while(sc.hasNext()){
15             int n = sc.nextInt();
16             if(n>=1 && n<=100){
17                 System.out.println(getNum(n));
18             }else{
19                 break;
20             }
21         }
22     }
23 
24   //递归求解
25     public static int getNum(int n) {
26         if(n<1 && n>100){
27             return -1;
28         }
29         if(n == 1){
30             return 0;
31         }
32      //如果有两个空瓶子,可以换一瓶水
33         if(n == 2){
34             return 1;
35         }
36      // n/3得到的是当前n个空瓶子可以直接换取多少瓶水
37         // n%3求的是 当前n个空瓶子换了若干瓶水之后,还剩多少个空瓶子,再加3,就是下一轮可以用来换水的空瓶子总数
38 
39         return n/3+getNum(n%3 + n/3);
40     }
41 }

 

以上是关于华为研发工程师编程题的主要内容,如果未能解决你的问题,请参考以下文章

华为研发工程师编程题

华为研发工程师编程题

[算法]2018年阿里巴巴数据研发工程师编程题

华为牛客网机试都是编程么

搜狐2016研发工程师编程题

网易2016研发工程师编程题:扫描透镜