zliczanie sumy permutacji

0

Heja! Mam problem i myślę, że mi pomożecie :) Nie potrafię zaimplementować zliczania sumy każdej z permutacji w rekurencję bo omija mi pola (przykładowo dla n=3 to co drugą permutację nie dodaje do sumy 1 pola przez co wychodzą złe wyniki).
Powinienem sprawdzać sumę w trakcie tworzenia każdej z permutacji żeby w razie wypadku gdyby suma przekroczyła wartość poprzedniej zbrejkować, aby zaoszczędzić na czasie. Nie mogę udostępnić kodu ale wygląda to mniej więcej tak:

void funkcja(int a){
    for(int b=0;b<n;b++){
        if(pole(a,b) nie jest szachowane){
            tab[a][b]=true
            //tutaj dodaję do sumy wartosc z pola tab_wartosci[a][b]
            //sprawdzanie czy suma jest większa od starej sumy jeśli tak to break;

            if(a==n-1)
                wypisz
                //zerowanie sumy
            else
                funkcja(a+1)

            tab[a][b]=false
        }
    }
}

gdzie powinien dorzucić zliczanie żeby nie omijało mi pól?

0

Czy suma permutacji nie powinna wyjść taka sama dla każdej z tych permutacji?

0

zapomniałem dodać (ahh ta godzina), że mam tablica n x n przechowującą różne wartości dla przykładu:
4 2 5
7 9 2
0 1 1

więc dla permutacji 012 suma będzie wynosiła 14 (4+9+1)
dla 021 -> 7 (4+2+1)
itd.

0

można to zrobić lepiej bez rekurencji, korzystając z: http://www.cplusplus.com/reference/algorithm/next_permutation/

0

niestety nie mogę korzystać z gotowych funkcji... jakieś sugestie dotyczące mojego problemu?

0

Zajrzeć do tej funkcji next_permutation i przetłumaczyć na swój C.

0

ale ja mam to w c++ to raz... dwa, że permutacje generuje mi dobrze tylko miałem problem ze zliczaniem sumy bo omijało mi pola, ale już sobie poradziłem z tym sam :) dzięki za chęć pomocy

1 użytkowników online, w tym zalogowanych: 0, gości: 1