Permutacje łańcuchów w Javie (nierekurencyjne)

Jestem uczniem szkoły średniej w klasie 10, próbując rozwiązać pewne problemy w książce Struktury danych i algorytmy dotyczące Javy.

Jednym z pytań jest wydrukowanie wszystkich permutacji ciągu.

class C14
{
public static void main(char a[])
{
    // char[] a = {'c','a','r','b','o','n'};
    int c=0,w=0;
    for(int q = 0;q<a.length;q++) 
    {
        for(int i=0;i<a.length;i++)
        {
            for(int j=1;j<a.length;j++)
            {
                for(int k=1;k<a.length-1;k++) 
                {
                    for(int z=0;z<a.length;z++)
                    {
                        System.out.print(a[z]);
                        c++;
                    }
                    w++;
                    System.out.println();
                    char p=a[k+1];
                    a[k+1]=a[k];
                    a[k]=p;
                }
                System.out.println();
            }
            System.out.println();
            char x=a[0];
            a[0]=a[1];
            a[1]=x;
        }
      }
    System.out.println(" Character count = " + c);
    System.out.println(" Word count = " + w);
    }
}

To jest moja próba. Książka prosi mnie o zrobienie tego dla znaków „c”, „a”, „r”, „b”, „o”, „n”. Moje rozwiązanie właśnie to robi, ale kiedy próbuję użyć słów 3 lub 4-literowych, daje mi to powtórzenia. Jeśli usuwam zewnętrzną pętlę i próbuję ją wydrukować, działa ona dla słów 3 i 4-literowych, ale nie dla słów 5+.

Z przyjemnością wyjaśnię moje rozumowanie, wiem, że nie jest to najbardziej efektywne, ale pamiętajcie, że jestem w klasie 10 i to właśnie przyszło mi na myśl.

Czy ktoś może mi pomóc, a przynajmniej wskazać, co jest nie tak? Proszę nie doradzać rekurencyjnego rozwiązania, ponieważ najpierw chcę przez to przepracować. Dzięki, Sumit.

questionAnswers(1)

yourAnswerToTheQuestion