首页 > 代码库 > 奖金游戏 java

奖金游戏 java

有十名员工,先输入十名员工的成绩,每名员工只能看到前后俩名员工的成绩,每人初始奖金1万,每名员工所获奖金必须比低于他成绩的前后员工的奖金高。最少需要多少钱。

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.Scanner;
 4 
 5 class Test {
 6     // 奖金
 7     static ArrayList<node> ff(ArrayList<node> a1) {
 8         ArrayList<node> a=(ArrayList<node>)a1.clone();
 9         Collections.sort(a);
10         for (node n : a) {
11             if (n.right == null) {
12                 if (n.left != null) {
13                     if (n.left.num < n.num) {
14                         n.many = n.left.many + 1;
15                     } else if (n.left.num == n.num) {
16                         n.many = n.left.many;
17                     }
18                 }
19             } else {
20                 if (n.left != null) {
21                     if (n.num > n.left.num) {
22                         n.many = n.left.many + 1;
23                     }
24                     if (n.left.num == n.num) {
25                         n.many = n.left.many;
26                     }
27                     if (n.right.num == n.num) {
28                         n.many = n.right.many;
29                     }
30                     if (n.num > n.right.num) {
31                         n.many = n.right.many + 1;
32                     }
33                     if (n.num > n.left.num && n.num > n.right.num) {
34                         int m = (n.left.num > n.right.num) ? n.left.many
35                                 : n.right.many;
36                         n.many = m + 1;
37                     }
38                 } else {
39                     if (n.num > n.right.num) {
40                         n.many = n.right.many + 1;
41                     }
42                     if (n.right.num == n.num) {
43                         n.many = n.right.many;
44                     }
45                 }
46             }
47 
48         }
49         return a;
50     }
51 
52     public static void main(String[] args) {
53         Scanner in = new Scanner(System.in);
54         ArrayList<node> a = new ArrayList<node>();
55         node n1 = null;
56         while (in.hasNext()) {
57             int sum = 0;
58             node n0 = new node();
59             n0.num = in.nextInt();
60             in.nextLine();
61             if (n1 != null) {
62                 n0.left = n1;
63             }
64             n1 = n0;
65             a.add(n0);
66             if (a.size() >= 2) {
67                 a.get(a.size() - 2).right = n0;
68             }
69             for (node node : a) {
70                 node.many = 1;
71             }
72             ArrayList<node>a1 = ff(a);
73             for (node node : a1) {
74                 sum += node.many;
75             }
76             System.out.println(sum);
77         }
78     }
79 }
80 
81 class node implements Comparable<node> {
82     int num = 0;
83     node left = null;
84     node right = null;
85     int many = 1;
86 
87     @Override
88     public int compareTo(node o) {
89         // TODO Auto-generated method stub
90         if (this.num > o.num) {
91             return 1;
92         } else if (this.num == o.num) {
93             return 0;
94         }
95         return -1;
96     }
97 }

 

奖金游戏 java