PTA gg的超市

PTA gg的超市


题目复杂的很蛋疼,其实就是一个队列入队出队,一个入栈出栈的过程。

大致题意:
① 小a在仓库前门传送带放东西,传送带送到仓库后门。(符合队列先进先出的特性)
② 小b从传送带取东西,但是由于他偷懒,每次都放到货架最前面。客人来每次都会从最新的开始拿(符合栈先进后出的特性)

需要注意的点:
① 假如货架要取10个货物,但是仓库只有5个,这时货架就只能入栈5个。
② 管理检查货架时,货架可能为空。

import java.util.ArrayDeque;
import java.util.Scanner;// 货物的结构体,只需要存放入货的日期即可。
class Node{int date;Node(int date){this.date = date;}
}
public class Main {// 题目长的一批,做这种题要学会捕获有用的题干public static void main(String[] args) {Scanner cin = new Scanner(System.in);// java获取输入,d为天数int d = cin.nextInt();// java的栈和队列可以用同一个类实现,这里store就是仓库(a队列)ArrayDeque<Node> store = new ArrayDeque<>();// shop就是货架(b栈)ArrayDeque<Node> shop = new ArrayDeque<>();for(int i = 1; i <= d; i++) {// 获取输入,第一个输入的第几天没卵用cin.nextInt();int a1 = cin.nextInt();int a2 = cin.nextInt();int a3 = cin.nextInt();int a4 = cin.nextInt();// 根据进货数量,以货物为单位入栈,i就是货物进货的日期for(int a = 0; a < a1; a++)store.add(new Node(i));// 题目不保证仓库后面的货量 >= b要拿走的量,进行一次判断,确保不要多取int t_a2 = a2 > store.size() ? store.size() : a2;// 根据b取货的数量,从仓库后门拿走货物放到货架上for(int a = 0; a < t_a2; a++) shop.push(store.pop());// 同上,不保证顾客买走的量 <= 货架的量,进行一次判断int t_a3 = a3 > shop.size() ? shop.size() : a3;for(int a = 0; a < t_a3; a++)shop.pop();// 注意判断来检查时,货柜是否为空if(a4 == 1 && !shop.isEmpty()) {int day = i - shop.peek().date;if(day >= 3) {System.out.println(i + " Wang!Wang!!Wang!!!");shop.clear();}}}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部