2009-05-28 3 views
0

난가 N 대 합성 질문

int[] array = new array[n];// n may be 2,3,4 

아래 예와 같이 배열 = 4 내가 내에 놓이지 LINQ를 사용하지 않고,이 어레이의 모든 unrepeated 조합을 계산 방법

int[] array = new array[4]; 

array[0] = 2; 
array[1] = 4; 
array[2] = 6; 
array[3] = 8; 

?


2,4,6,8 2,4,8,6 2,8,6,4


2,6,4,6 8,6,4,2
2 ,
4,6,8 .......
.......
.......

+1

순열을 요구합니까? 예를 들면 다음과 같습니다. {2,4,6,8}, {2,4,8,6}, ... –

+2

또한 숙제 인 경우이를 태그해야합니다. –

답변

0

글쎄, 모든 반복되지 않은 조합을 찾고 있다면 N! 그러한 조합 ... (그래서, 귀하의 경우 N! = 4! = 24 그러한 조합).

나는이 글을 게시하는 중이므로, dommer는 좋은 구현을 지적했다.

N의 큰 값 (N! 순열이 있기 때문에)이 실제로 느려질 것이라는 점에주의하십시오.

+0

N = 4가 그의 상한이라고 생각합니다. –

+0

좋은 점, 나는 그것을 놓쳤다! – Daemonic

0

세상의 두 가지 상태가 어떤 빛을 비추는 지 확인하십시오.

1) 내 배열에 중복 기호가 없습니다 (즉, 배열의 각 숫자는 고유합니다). 이 경우 순열이 얼마나 많이 있습니까?이 있습니까?

2) 어레이에 단일 복사가 하나 있습니다. 그래서, 당신은 일부 하나에서 계산 순열의 수, 얼마나 많은 단지

1,3,5 얼마나 많은 순열을 가지고 단순위한 3 개 요소 배열을 할 수 있습니다, 흠

중복입니까?

1,3,5-

1,5,3

3,1,5

3,5,1

5,1,3

5 , 3,1

따라서 6 개의 순열

이제 1,5,5라고 말하면 목록이 바뀌면 어떻게 될까요?

우리는

1,5,5

5,1,5

5,5,1 얻을

당신에게 내 질문이 될 것

, 당신은 어떻게이를 통해 표현할 수 계승?

아마도 4 요소 배열로 모든 순열을 쓰고 전구가 꺼지는 지 확인해보십시오.