Ερώτηση στην προστιθέμενη αξία σε μία συστοιχία με μία άλλη συστοιχία για μέτρηση γ ++

ψήφοι
0

Εδώ είναι η κατάσταση:

Ο χρήστης μπορεί να επιλέξει μέχρι και 4 ζάρια στο τραπέζι με μια σειρά [1-12] πρόσωπα που θέλουν (Ναι, 1 πρόσωπο ζάρια είναι ένα πράγμα εδώ). Στη συνέχεια, το πρόγραμμα θα υπολογίσει όλες τις δυνατότητες αποτέλεσμα.

Για παράδειγμα: 2 ζάρια, 1 με 6 πρόσωπα, 2ος με 2 όψεις.

Παραγωγή:

Άθροισμα 2 = 1

Άθροισμα 3 = 2

Άθροισμα 4 = 2

Άθροισμα 5 = 2

Άθροισμα 6 = 2

Άθροισμα 7 = 2

Άθροισμα 8 = 1

Έχω ανακαλύψει το μοτίβο να υπολογίσει με όλες τις δυνατότητες με διαφορετικά όχι. ζάρια και τα πρόσωπα που έχουν, εδώ είναι το παράδειγμα:

4 ζάρια με όψεις [6, 2, 3, 4] αντίστοιχα

Κάντε κλικ εδώ για να ελέγξετε το μοτίβο

Μπλε περιοχή είναι μια ζάρια με 6 πρόσωπα πράσινη περιοχή είναι 6 πρόσωπα με 2 φορές την κίτρινη περιοχή είναι καταπράσινη βρόχου περιοχή με 3 φορές Διαβάστε περιοχή είναι κίτρινη περιοχή βρόχου με 4 φορές

Οι αριθμοί μέρος είναι η μέτρηση της εμφάνισης του κάθε ποσού και είναι σωστό όλη την ώρα δεν έχει σημασία τι είναι εισόδους.

Κάθε νέα περιοχή θα ξεκινήσει στις id [5] και μετά από κάθε επανάληψη η περιοχή διαδικασία θα στραφούν [i + 1] διάστημα μέχρι το τέλος.

Ωστόσο, έχω προσπαθήσει πολλές φορές και ακόμα δεν μπορείτε να βρείτε το σωστό τρόπο για να εφαρμόσει αυτό το σχέδιο σε C ++ πρόγραμμα.

κωδικούς μου είναι κάπως έτσι:

// Calculate the first iteration of dices

for (int k = 0; k < faces[2]; k++) {
        for (int j = num + k; j < (num + faces[1] + k); j++) {
            tempCount[j]++;
        }
    }

    // Copy results into counter1[]

    for (int i = num; i <= faceCounter; i++) {
        counter1[i] += tempCount[i];
    }

    // Find out the remaining dices

    for (int i = 2; i < num; i++) {
        for (int k = 0; k < faces[i+1]; k++) {                          // Calculate the count range
            for (int j = num + k + 1; j < (num + faces[i] + k); j++) {  // Add the previous counter's value into temp counter
                tempCount[j] += counter1[i];
            }
            if (k == faces[i + 1] - 1)                                  // Make sure finished the for loop first then to final addition, won't duplicate data
                finished = 1;
        }

        //Load results back to counter, which will using it back in loop for further counting

        for (int i = num; (i <= faceCounter) && (finished = 1); i++) {
            counter1[i] += tempCount[i];
        }

        finished = 0;
    }

Αυτό δεν λειτουργεί όμως.

Πώς μπορώ να το αλλάξω;

Δημοσιεύθηκε 24/10/2019 στις 12:54
πηγή χρήστη
Σε άλλες γλώσσες...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more