Mi pare ovvio... il tuo array dovrà avere ( n! / (2*(n-2)!) ) elementi (il perchè non è complesso: si tratta del numero di combinazione senza ripetizioni degli elementi). In quel ciclo for innestato, invece, tu aggiungi 1 alla variabile "puntatore" esattamente N * (N-1) volte... che è più di quanto ci si aspetta (nell'esempio che hai indicato, tu hai un array di 3 elementi (3! / 2*(3-2)!), mentre tu aggiungi 1 alla variabile esattamente 3 * (3-1) = 6 volte...


Ciao.