Kérdés a hozzáadott érték a tömb másik tömb számlálására c ++

szavazat
0

Itt a helyzet:

A felhasználó választhat akár 4 kocka az asztalon egy sor [1-12] arcok akarnak (Igen, 1 arc kocka egy dolog, itt). Ezután a program kiszámítja az összes eredmény lehetőséget.

Például: 2 dobókocka, 1, 6 arcok, 2. 2 arcok.

Kimenet:

Összege 2 = 1

Összege 3 = 2

Összege 4 = 2

Összeg 5 = 2

Összege 6 = 2

Összege 7 = 2

Összege 8 = 1

Azt találtam ki a minta számolni az összes lehetőséget a különböző nem. kocka és az arcok vannak, itt a képen látható:

4 dobókocka arcok [6, 2, 3, 4] rendre

Kattintson ide, hogy ellenőrizze a minta

Blue terület egy kocka 6 arcok zöld terület 6 arcok, 2-szer Sárga terület zöldövezetben hurok 3-szor Read terület sárga terület loop 4-szer

A számok félre a száma a megjelenése minden összeg, és ez helyes minden alkalommal, nem számít, milyen bemenet.

Minden új terület kerül kezdődik id [5] és miután minden iterációs folyamat terület tolódik [i + 1] helyet, amíg a végén.

Én azonban már kísérletet sokszor, és még mindig nem találja a helyes utat, hogy végre ezt a mintát a C ++ programot.

Saját kódok, mint ez:

// 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;
    }

Ez így nem működik, bár.

Hogyan tudom megváltoztatni?

A kérdést 24/10/2019 12:54
a forrás felhasználó
Más nyelveken...                            

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