Tägliche Frage (in die Schlange springen)

Eine Bank teilt Kunden in mehrere Prioritätsstufen ein, wobei Stufe 1 die höchste und Stufe 5 die niedrigste ist. Wenn Sie Geschäfte in der Bank abwickeln müssen, können sich Personen mit höheren Prioritäten jederzeit vor Personen mit niedrigeren Prioritäten anstellen .

Wenn Sie nun die zeitliche Abfolge von Personalankunft und Banktransaktion kennen, geben Sie bitte die Kundennummer jedes Mal aus, wenn die Bank die Transaktion abwickelt.

Gibt es gleichzeitig mehrere Kunden mit gleicher und höchster Priorität, erfolgt die Bearbeitung nach dem Prinzip „Wer zuerst kommt, mahlt zuerst“.

Beschreibung eingeben

Die erste Eingabezeile ist eine positive ganze Zahl n, die die Anzahl der Ereignisse in der Eingabesequenz darstellt. (1≤n≤500)

Als nächstes folgen n Zeilen, das erste Zeichen jeder Zeile ist a oder p.

Wenn das Zeichen a ist, stehen am Ende zwei positive Ganzzahlen num und x, was darauf hinweist, dass die Nummer des eingehenden Kunden num und die Priorität x ist.

Wenn das Zeichen p ist, bedeutet dies, dass der Kunde mit der höchsten aktuellen Priorität das Geschäft abwickeln sollte.

Ausgabebeschreibung

Die Ausgabe enthält mehrere Zeilen. Für jedes p wird eine Zeile ausgegeben, die nur eine positive Ganzzahl num enthält, die die Kundennummer für die Geschäftsabwicklung darstellt.

Probe

eingeben:

4
a 1 3
a 2 2
a 3 2
p

Ausgabe:

2

Da der Titel besagt, dass es 5 Ebenen gibt, verwenden wir Warteschlangen direkt, um die Reihenfolge der Kundennummern für jede Ebene aufrechtzuerhalten. Wenn wir Geschäfte abwickeln müssen, durchlaufen wir jede Warteschlange von 1 bis 5. Wenn wir auf eine nicht leere Warteschlange stoßen, tun wir dies Popup eines Kunden aus dem Kopf der Warteschlange. Nummer zur Ausgabe.

Code:

package com.ceshi;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        Queue<Integer>[] queues = new LinkedList[6];
        for (int i = 1; i < 6; i++)
            queues[i] = new LinkedList<>();
        for (int i = 0; i < n; i++) {
            String op;
            op = scan.next();
            if (op.equals("a")) {
                int x, y;
                x = scan.nextInt();
                y = scan.nextInt();
                queues[y].offer(x);
            } else {
                for (int j = 1; j <= 5; j++) {
                    if (!queues[j].isEmpty()) {
                        System.out.println(queues[j].poll());
                        break;
                    }
                }
            }
        }
    }
}

おすすめ

転載: blog.csdn.net/a154555/article/details/129712286