金银铜奖牌排序java
时间: 2024-07-18 14:01:43 浏览: 98
在Java中,如果你想对金银铜奖牌进行排序,通常会创建一个奖牌枚举类型,并为每种奖牌分配一个整数值代表优先级。例如:
```java
public enum Medal {
GOLD(1), SILVER(2), BRONZE(3);
private int priority;
Medal(int priority) {
this.priority = priority;
}
public int getPriority() {
return priority;
}
}
// 排序示例
List<Medal> medalList = Arrays.asList(BRONZE, SILVER, GOLD); // 假设我们已经有了奖牌列表
Collections.sort(medalList, Comparator.comparing(Medal::getPriority));
// 现在medalList应该是[GOLD, SILVER, BRONZE]
相关问题
用Java实现金银岛贪心算法
金银岛问题是一个经典的贪心算法问题。以下是使用Java实现这个问题的代码:
```java
import java.util.Scanner;
public class JinYinDao {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 宝藏数量
int m = sc.nextInt(); // 背包容量
int[] v = new int[n]; // 每个宝藏的价值
int[] w = new int[n]; // 每个宝藏的重量
double[] p = new double[n]; // 每个宝藏的性价比
for (int i = 0; i < n; i++) {
v[i] = sc.nextInt();
w[i] = sc.nextInt();
p[i] = (double) v[i] / w[i]; // 计算性价比
}
// 按照性价比从大到小排序
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (p[i] < p[j]) {
double temp = p[i];
p[i] = p[j];
p[j] = temp;
int temp1 = v[i];
v[i] = v[j];
v[j] = temp1;
int temp2 = w[i];
w[i] = w[j];
w[j] = temp2;
}
}
}
double sum = 0; // 总价值
int i = 0; // 当前所选宝藏的下标
while (m > 0 && i < n) { // 背包还有空间且还有未选的宝藏
if (w[i] <= m) { // 当前宝藏可以全部装进背包
sum += v[i];
m -= w[i];
i++;
} else { // 当前宝藏装不下,只能装一部分
sum += p[i] * m;
break;
}
}
System.out.printf("%.2f", sum); // 输出总价值
}
}
```
这个程序首先读入宝藏的数量、背包的容量以及每个宝藏的价值和重量。然后,程序计算每个宝藏的性价比,并按照性价比从大到小排序。接着,程序使用贪心算法依次选取性价比最高的宝藏,直到背包无法再装下一个宝藏为止。最后,程序输出选中的宝藏的总价值。
用java实现金银岛贪心算法
金银岛问题是一个著名的贪心算法问题,可以用Java语言实现。下面是一个简单的实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // n个金矿
int w = sc.nextInt(); // 背包容量
int[] g = new int[n]; // 每个金矿的黄金量
int[] p = new int[n]; // 每个金矿需要的人数
for (int i = 0; i < n; i++) {
g[i] = sc.nextInt();
p[i] = sc.nextInt();
}
int[][] dp = new int[n + 1][w + 1]; // 动态规划数组
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= w; j++) {
if (j < p[i - 1]) { // 当前背包容量不能装下第i个金矿
dp[i][j] = dp[i - 1][j];
} else { // 可以装下第i个金矿
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - p[i - 1]] + g[i - 1]);
}
}
}
System.out.println(dp[n][w]); // 输出最大黄金量
}
}
```
输入格式如下:
```
5 10
400 5
500 5
200 3
300 4
350 3
```
其中第一行输入金矿数和背包容量,接下来每行输入每个金矿的黄金量和需要的人数。
输出结果为最大黄金量,即:
```
900
```
相关推荐
![.rar](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)