Einführung
Einige von Ihnen haben vielleicht von Hilberts Grand Hotel gehört . Der Manager dort hat seine Liste mit den Aufenthaltsorten der Gäste verloren, hat jedoch immer noch die Reihenfolge, in der sie eingecheckt haben. Jeder Gast kann nicht in einem Zimmer mit einer niedrigeren Zimmernummer als ihrem Wert übernachten und wenn ein Gast zu einer niedrigeren hinzugefügt wird zimmer, alle gäste in höheren zimmern ohne leeren raum zwischen ihnen und dem neuen gast werden um ein zimmer nach oben verschoben. Können Sie ihm helfen, herauszufinden, wo sich die Gäste aufhalten?
Bedarf
Schreiben Sie ein Programm, das eine geordnete Liste natürlicher Zahlen als Eingabe erhält und diese an ihrem Index ablegt. Wenn der Index bereits einen Wert enthält, wird er zum nächsten Eintrag in der Liste verschoben. Dieser Vorgang wird wiederholt, bis der erste leere (0 oder undefinierte) Bereich gefunden wurde. Undefinierte Leerzeichen zwischen dem aktuell höchsten Index und neuen Eingaben werden durch Hinzufügen von Nullen aufgefüllt. Da dies Hilberts Grand Hotel ist, gibt es keine Zimmer, die höher sind als der derzeit am höchsten belegte Index.
Ein- und Ausgang
Bei der Eingabe handelt es sich um eine geordnete Liste natürlicher Zahlen (die durch jede akzeptierte Form der Eingabe gelesen werden dürfen).
Jede Zahl in der Eingabe gilt als ein Gast, der im Hotel ankommt, und ist in der Reihenfolge seiner Ankunft
Ausgabe wird die endgültige Anordnung der Gäste (Zahlen) sein
Beispiele
Eingabe: 1 3 1
Ausgabe: 1 1 3
Schritt für Schritt:
1
Raum auf Index 1 anlegen und 1 darin platzieren
1 0 3
Räume auf Index 3 anlegen und 3 in Raum 3 platzieren
1 1 3
Verschieben Sie den Inhalt von Raum 1 nach oben ein Raum und Platz 1 in Raum 1Eingabe: 1 4 3 1 2 1
Ausgabe : 1 1 2 1 3 4
Schritt für Schritt:
1
Raum an Index 1 anlegen und 1 darin platzieren
1 0 0 4
Räume bis Index 4 anlegen und 4 in Raum 4
1 0 3 platzieren 4
Platzieren Sie 3 in Raum 3
1 1 3 4
Verschieben Sie den Inhalt von Raum 1 um einen Raum und platzieren Sie 1 in Raum 1
1 2 1 3 4
Verschieben Sie den Inhalt von Räumen 2 bis 4 um einen Raum und platzieren Sie 2 in Raum 2
1 1 2 1 3 4
Verschieben Sie den Inhalt der Räume 1 bis 5 um einen Raum und platzieren Sie 1 in Raum 1Eingabe: 10
Ausgabe: 0 0 0 0 0 0 0 0 0 0 10
Schritt für Schritt:
0 0 0 0 0 0 0 0 0 10
Erstellen Sie Räume bis zu Raum 10 und platzieren Sie 10 in Raum 10Hinweise: Das
Arbeiten mit einer indizierten 0 ist in Ordnung. In diesem Fall können Sie eine 0 vor der Ausgabe einfügen
Standardlücken sind verboten, kürzester Code in Bytes gewinnt