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
.......
.......
.......

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top