【PTA】Mischmaschine

Beim Mischen handelt es sich um ein Verfahren zur zufälligen Zusammenstellung eines Kartenspiels. Da Standard-Mischtechniken als schwach angesehen werden und um „Insider-Jobs“ zu vermeiden, bei denen Mitarbeiter mit Spielern zusammenarbeiten, indem sie unzureichende Mischtechniken durchführen, setzen viele Casinos automatische Mischmaschinen ein. Ihre Aufgabe ist es, eine Mischmaschine zu simulieren.

Die Maschine mischt einen Stapel mit 54 Karten in einer vorgegebenen zufälligen Reihenfolge und wiederholt den Vorgang so oft wie möglich. Es wird davon ausgegangen, dass der Anfangsstatus eines Kartenspiels in der folgenden Reihenfolge liegt:

S1, S2, ..., S13,
H1, H2, ..., H13,
C1, C2, ..., C13, D1,
D2, ...,D13,
J1, J2

Dabei steht „S“ für „Spade“, „H“ für „Heart“, „C“ für „Club“, „D“ für „Diamond“ und „J“ für „Joker“. Eine gegebene Ordnung ist eine Permutation verschiedener ganzer Zahlen in [1, 54]. Wenn die Zahl an der i-ten Position j ist, bedeutet dies, dass die Karte von Position i auf Position j verschoben wird. Angenommen, wir haben nur 5 Karten: S3, H5, C1, D13 und J2. Bei einer Mischreihenfolge {4, 2, 5, 3, 1} lautet das Ergebnis: J2, H5, D13, S3, C1. Wenn wir das Mischen noch einmal wiederholen, ist das Ergebnis: C1, H5, S3, J2, D13.

Eingabespezifikation:
Jede Eingabedatei enthält einen Testfall. Für jeden Fall enthält die erste Zeile eine positive ganze Zahl K (≤20), die die Anzahl der Wiederholungen angibt. Dann enthält die nächste Zeile die angegebene Reihenfolge. Alle Zahlen in einer Zeile werden durch ein Leerzeichen getrennt.

Ausgabespezifikation:
Drucken Sie für jeden Testfall die Mischergebnisse in einer Zeile aus. Alle Karten sind durch ein Leerzeichen getrennt und am Ende der Zeile darf kein zusätzliches Leerzeichen stehen.

Beispieleingabe:

2 36 52 37 38 3 39 40 53 54 41 11 12 13 42 43 44 2 4 23 24 25 26 27 6 7 8 48 49 50 51 9 10 14 15 16 5 17 18 19 1 20 21 22 28 29 30 31 32
33
34 35 45 46 47

Beispielausgabe:

S7 C11 C10 C12 S1 H7 H8 H9 D8 D9 S11 S12 S13 D10 D11 D12 S3 S4 S6 S10 H1 H2 C13 D2 D3 D4 H6 H3 D13 J1 J2 C1 C2 C3 C4 D1 S5 H5 H11 H12 C6 C7 C8 C9 S2 S8 S9 H10 D5 D6 D7 H4 H13 C5

C++-Code:

#include <iostream>
using namespace std;
int main(){
    
    
    int n;
    cin>>n;//洗牌次数
    int i=0;
    string b[54]={
    
    "S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13",
                  "H1","H2","H3","H4","H5","H6","H7","H8","H9","H10","H11","H12","H13",
                  "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13",
                  "D1","D2","D3","D4","D5","D6","D7","D8","D9","D10","D11","D12","D13",
                  "J1","J2"};//替换
    int op[54]={
    
    0};//顺序数字
    string a[54];//装洗牌后的牌
    
    for(i=0;i<54;i++){
    
    
        cin>>op[i];}
    
    for(i=0;i<n;i++){
    
    
        for(int j=0;j<54;j++){
    
    
            a[op[j]-1]=b[j];
        }
        if(i!=n-1){
    
    
            for(int j=0;j<54;j++){
    
    
            b[j]=a[j];
            }
        }
    }
    for(i=0;i<54;i++)
    {
    
    
        cout<<a[i];
        if(i!=53){
    
    cout<<" ";}
    }
}
``

Supongo que te gusta

Origin blog.csdn.net/qq_51669241/article/details/114382692
Recomendado
Clasificación