Prosba o sprawdzenie algorytmu - zle wyniki

0

Witam,
zmagam się z jednym algorytmem "Podziały liczby w kolejności antyleksykograficznej".

Napisałem sobie implementację,jak poniżej:

 public class Podzialy {

void Podzialy_liczby(int n)
{
   int d, sum, l;
   int S[] = new int[n ];
   int R[] = new int[n ];
   
    try
    {
       S[0] = n;
       R[0] = 1;
       d = 1;

       FileWriter outFile = new FileWriter("podzial_liczby.txt");
       PrintWriter out = new PrintWriter(outFile);

       // pierwszy podzial
       out.println(n);

       while (S[0] > 1)  //znajdz nastepny podzial
       {
         sum = 0;

         if (S[0] == 1) break;

         if (S[d - 1] == 1) sum += R[--d];
         sum += S[d - 1];
         R[d - 1]--;
         l = S[d - 1] - 1;
         if (R[d - 1] > 0) d++;
         S[d - 1] = l;

         R[d - 1] = sum / l;
         l = sum % l;
         if (l != 0)
         {
            S[d] = l;
            R[d++] = 1;
         }

         out.print(S[0]);
         out.print(S[1]);
         out.print(S[2]);
         out.print(S[3]);
         out.print("\n");

        }
   

       out.close();
    }

    catch (IOException e)
    {
        e.printStackTrace();
    }
}



    public static void main(String[] args)
    {
        Podzialy x = new Podzialy();

        x.Podzialy_liczby(5); 

    }
}

jednak zamiast na wyjściu podać mi cos a`la:

5
4 + 1
3 + 2
3 + 1 + 1
2 + 2 + 1
2 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1

dostaję coś innego,

Chciałbym prosić o pomoc w skończeniu tego algorytmu,
za pomoc na pewno uścisk ręki prezesa i piwo :)

pozdrawiam

0

Użyj rekurencji, będzie prościej.

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