小猴子拾桃子

Posted Confesser

tags:

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

小猴子要去拾桃子,走过一排数,每个树上有数量不等的桃子,小猴子只能在每颗树上拿一颗桃子,并且拿桃子的树不能比上一颗被拿桃子的树所结桃子数量少,求小猴子最多能拿多少颗桃子

输入 n+1行,第一行是有多少颗桃树,剩下行数分别是桃树所结桃子的个数

例如:

5

10

4

5

12

8

输出:

4

5

8

回来晚了,刚写完,平台就关闭了,代码没怎么验证,贴出来,有问题请指出:

 1 import java.util.*;
 2 
 3 public class Main {
 4 
 5     private static int maxRightCount = 0;
 6     private static Node resultNode = null;
 7 
 8     public static void main(String[] args) {
 9         Scanner in = new Scanner(System.in);
10         int trees = Integer.parseInt(in.nextLine().trim());
11         int[] peaches = new int[trees];
12         for (int i = 0; i < peaches.length; i++) {
13             peaches[i] = Integer.parseInt(in.nextLine().trim());
14         }
15         Node head = new Node(peaches[0]);
16         for (int i = 1; i < peaches.length; i++) {
17             buildBTree(peaches[i], head);
18         }
19         while (resultNode != null) {
20             System.out.println(resultNode.value);
21             resultNode = resultNode.right;
22         }
23     }
24 
25     //构建二叉树
26     private static void buildBTree(int value, Node node) {
27         if (value < node.value) {
28             if (node.left == null) {
29                 node.left = new Node(value);
30             } else {
31                 buildBTree(value, node.left);
32             }
33         }
34         if (value > node.value) {
35             node.rightCount++;
36             if (node.right == null) {
37                 node.right = new Node(value);
38                 if (node.rightCount > maxRightCount) {
39                     maxRightCount = node.rightCount;
40                     resultNode = node;
41                 }
42             } else {
43                 buildBTree(value, node.right);
44             }
45         }
46     }
47 
48 
49     private static class Node {
50 
51         Node left;
52         Node right;
53         int value;
54         int rightCount;
55 
56         Node(int value) {
57             this.value = value;
58         }
59     }
60 }

 

以上是关于小猴子拾桃子的主要内容,如果未能解决你的问题,请参考以下文章

递归小案例

用java猴子吃桃子问题,第一天吃掉所有桃子的一半多一个,第二天又吃掉剩下桃子的一

用java程序写出来 猴子摘了一些桃子,第一天吃了一半,又多吃了一个,第二天又吃了一半,

C语言猴子吃桃递归法

有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。

编程之美学习之最长子序列的解法