某超市进行大米促销,每人限购一袋。现在有50人来排队购买,每个人购买后如果想再购买一袋则需要重新排队(是否再购买可以随机设定)。 试应用队列编写代码输出最后超市卖出的大米袋数。要求使用Java
时间: 2023-03-27 18:03:14 浏览: 65
好的,我可以回答这个问题。以下是Java代码:
```
import java.util.LinkedList;
import java.util.Queue;
public class Supermarket {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
int bagsSold = ;
int maxBagsPerPerson = 2; // 最多购买袋数
int totalPeople = 50; // 总人数
// 初始化队列
for (int i = 1; i <= totalPeople; i++) {
queue.offer(i);
}
// 开始售卖
while (!queue.isEmpty()) {
int person = queue.poll();
bagsSold++;
// 判断是否可以再购买一袋
if (Math.random() < .5 && maxBagsPerPerson > 1) {
queue.offer(person);
}
// 判断是否已经售完
if (bagsSold >= totalPeople * maxBagsPerPerson) {
break;
}
}
System.out.println("超市卖出的大米袋数为:" + bagsSold);
}
}
```
这个程序使用队列来模拟超市的排队购买过程,每个人购买后如果可以再购买一袋,则重新排队。最后输出超市卖出的大米袋数。