Pergunta
Eu tenho uma matriz como abaixo
int[] array = new array[n];// n may be 2,3,4
exemplo para N = 4
int[] array = new array[4];
array[0] = 2;
array[1] = 4;
array[2] = 6;
array[3] = 8;
Como eu calcular todas as combinações irrepetível dessa matriz sem usar linq pode estar dentro?
2,4,6,8
2,4,8,6
2,8,6,4
2,6,4,6
8,6,4,2
2,4,6,8
.......
.......
.......
Solução
Aqui está um implementação bastante flexível C # usando iterators.
Outras dicas
Bem, uma vez que você está olhando para todas as combinações não repetidas, o que significa que haverá N! tais combinações ... (assim, no seu caso, N! = 4! = 24 tais combinações).
Como eu estou no meio de postar isso, Dommer apontou uma boa implementação.
Está avisado que é vai ficar muito lento para grandes valores de N (uma vez que existem N! Permutações).
Pense sobre os dois estados possíveis do mundo para ver se que lança alguma luz.
1) Não há dupes em minha matriz (i. Cada número na matriz é único). Neste caso, quantas possível permutações existem?
2) Existe um único enganar na matriz. Então, é o número de permutações que você calculado na primeira parte, quantos são apenas duplicatas
Hmmm, vamos dar uma matriz de três elementos para a simplicidade
1,3,5 tem como muitas permutações?
1,3,5
1,5,3
3,1,5
3,5,1
5,1,3
5,3,1
Assim, seis permutações
Agora, o que acontece se alterar a lista de dizer 1,5,5?
Recebemos
1,5,5
5,1,5
5,5,1
A minha pergunta seria, como você pode expressar essa via fatoriais?
Talvez tente escrever todas as permutações com uma matriz elemento quatro e ver se a lâmpada se apaga?