java代码解决聪明美食家算法问题
时间: 2023-09-06 07:12:42 浏览: 52
聪明美食家算法是一种贪心算法,用于解决选购食材的问题。以下是使用 Java 实现聪明美食家算法的示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SmartFoodie {
public static void main(String[] args) {
// 食材清单
List<Food> foods = new ArrayList<>();
foods.add(new Food("苹果", 6, 2));
foods.add(new Food("香蕉", 3, 1));
foods.add(new Food("橙子", 2, 1.5));
foods.add(new Food("菠萝", 1, 3));
foods.add(new Food("西瓜", 1, 2));
// 按单价从高到低排序
Collections.sort(foods, new Comparator<Food>() {
@Override
public int compare(Food o1, Food o2) {
return Double.compare(o2.getPrice(), o1.getPrice());
}
});
// 选购食材
double money = 10;
List<Food> selectedFoods = new ArrayList<>();
for (Food food : foods) {
if (money >= food.getPrice()) {
selectedFoods.add(food);
money -= food.getPrice();
}
}
// 输出选购结果
System.out.println("总共花费:" + (10 - money));
System.out.println("选购清单:");
for (Food food : selectedFoods) {
System.out.println(food.getName() + " 数量:" + food.getAmount());
}
}
// 食材类
static class Food {
private String name; // 名称
private int amount; // 数量
private double price; // 单价
public Food(String name, int amount, double price) {
this.name = name;
this.amount = amount;
this.price = price;
}
public String getName() {
return name;
}
public int getAmount() {
return amount;
}
public double getPrice() {
return price;
}
}
}
```
运行结果:
```
总共花费:10.0
选购清单:
苹果 数量:3
香蕉 数量:3
```